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) à laquelle je passe func(unsigned int&)est une valeur l. Je peux obtenir l'adresse de clret lui attribuer une autre valeur. Pourquoi cela se transforme-t-il en valeur lorsque j'essaie de le transmettre func(unsigned int&)?
typedef enumn'est pas un type natif, et C ++ le traiterait comme un unsigned inttype.
clr.
enum typecomme unsigned inten C ++.
enum Xest son propre type, distinct deint
enumununsigned int?