ตัวอย่าง:
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 เป็นสิ่งที่ไม่ดีในกรณีนี้
—
cpplearner
clrเสียงดังกราวจะให้ข้อความน้อยทำให้เกิดความสับสนโดยการพิมพ์ชนิดเดิมของ
@cpplearner ใช่นั่นคือเหตุผลที่ฉันคิดว่า
—
Koen
enum typeเป็นเช่นunsigned intใน C ++
enum Xเป็นประเภทของตัวเองแตกต่างจากint
enumunsigned int