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 clr
et lui attribuer une autre valeur. Pourquoi cela se transforme-t-il en valeur lorsque j'essaie de le transmettre func(unsigned int&)
?
typedef enum
n'est pas un type natif, et C ++ le traiterait comme un unsigned int
type.
clr
.
enum type
comme unsigned int
en C ++.
enum X
est son propre type, distinct deint
enum
ununsigned int
?