Misal:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Bunu derlediğimde aşağıdaki hatayı alıyorum:
<source>: In function 'int main()':
<source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'
func(clr);
^~~
Sanırım ilettiğim ( clr
) değişkeni func(unsigned int&)
bir değer. Adresini alabilir clr
ve ona başka bir değer atayabilirim. Bunu iletmeye çalıştığımda neden bir rvalueya dönüşüyor func(unsigned int&)
?
@ NathanOliver-ReinstateMonica Orijinal görüşüme göre,
—
Koen
typedef enum
yerel bir tür olmadığını düşünüyorum ve C ++ unsigned int
gerçekten bir tür olarak kabul eder .
Bu durumda GCC'nin hata mesajı yetersizdir. Clang orijinal türünü yazdırarak daha az kafa karıştırıcı bir mesaj verecektir
—
cpplearner
clr
.
@cpplearner evet, bu yüzden C ++
—
Koen
enum type
gibi tedavi olduğunu düşündüm unsigned int
.
enum X
kendi tipidir, farklıdırint
enum
aunsigned int
?