例:
_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);
^~~
_
私がfunc(unsigned int&)
に渡す変数(clr
)は左辺値だと思います。 clr
のアドレスを取得して、別の値を割り当てることができます。 func(unsigned int&)
に渡そうとすると、なぜ右辺値に変わるのですか?
列挙型initおよび代入は内部で列挙型でなければならないため、列挙型はlvalueにはできません。void func(unsigned int&num)この関数は引用型が必要です