예:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
이것을 컴파일 할 때 다음과 같은 오류가 발생합니다.
<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);
^~~
내가 clr
전달 하는 변수 ( ) func(unsigned int&)
는 lvalue 라고 생각합니다 . 주소를 얻을 수 있고 clr
다른 값을 할당 할 수 있습니다. 전달하려고 할 때 왜 rvalue로 변 func(unsigned int&)
합니까?
@ NathanOliver-ReinstateMonica 원래 의견으로는 필자
—
Koen
typedef enum
는 네이티브 유형이 아니며 C ++은 unsigned int
실제로 유형으로 취급합니다 .
이 경우 GCC의 오류 메시지는 차선책입니다. Clang은 원본 유형을 인쇄하여 혼동을 줄입니다
—
cpplearner
clr
.
@cpplearner yep, 이것이 C ++에서
—
Koen
enum type
와 같이 취급되는 이유 unsigned int
입니다.
enum X
자신의 유형에서 구별된다int
enum
A가unsigned int
?