Przykład:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Podczas kompilacji pojawia się następujący błąd:
<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);
^~~
Myślę, że zmienna ( clr
), którą przekazuję, func(unsigned int&)
jest wartością. Mogę uzyskać adres clr
i przypisać mu inną wartość. Dlaczego zmienia się w wartość, gdy próbuję ją przekazać func(unsigned int&)
?
typedef enum
nie jest rodzimym typem, a C ++ rzeczywiście traktowałby go jako unsigned int
typ.
clr
.
enum type
jest traktowany jak unsigned int
w C ++.
enum X
jest swoim rodzajem, różniącym się odint
enum
jestunsigned int
?