Beispiel:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Beim Kompilieren wird folgende Fehlermeldung angezeigt:
<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);
^~~
Ich denke, die Variable ( clr), an die ich übergebe, func(unsigned int&)ist ein Wert. Ich kann die Adresse von erhalten clrund ihm einen anderen Wert zuweisen. Warum wird es zu einem Wert, wenn ich versuche, ihn weiterzugeben func(unsigned int&)?
typedef enumhandelt es sich nicht um einen nativen Typ, und C ++ würde ihn unsigned inttatsächlich als Typ behandeln .
clr.
enum typesei wie unsigned intin C ++ zu behandeln.
enum Xist ein eigener Typ, der sich vonint
enumaunsigned int?