Exemple:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
J'obtiens l'erreur suivante lorsque je compile ceci:
<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);
^~~
Je pense que la variable (clr
) que je passe à func(unsigned int&)
est une valeur l. Je peux obtenir l'adresse de clr
et lui attribuer une autre valeur. Pourquoi cela se transforme-t-il en valeur r lorsque j'essaie de le passer à func(unsigned int&)
?
le type enum init et l'affectation doivent être enum à l'intérieur type donc le type enum ne peut pas être lvalue。 void func (unsigned int & num) cette fonction a besoin du type quote