Esempio:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Ottengo il seguente errore quando compilo questo:
<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);
^~~
Penso che la variabile ( clr
) a cui passo func(unsigned int&)
sia un lvalue. Posso ottenere l'indirizzo clr
e posso assegnargli un altro valore. Perché si trasforma in un valore quando provo a passarlo a func(unsigned int&)
?
typedef enum
non sia un tipo nativo, e C ++ lo tratterebbe unsigned int
davvero come un tipo.
clr
.
enum type
fosse trattato come unsigned int
in C ++.
enum X
è il suo tipo, distinto daint
enum
aunsigned int
?