web-dev-qa-db-fra.com

Pourquoi une variable enum est-elle une valeur r ici?

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&)?

12
Koen

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

0
superman