例:
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&)
は左辺値だと思います。のアドレスを取得して、clr
別の値を割り当てることができます。渡そうとすると、なぜ右辺値に変わるのfunc(unsigned int&)
ですか?
@ NathanOliver-ReinstateMonica私の元の意見では、私
—
公園
typedef enum
はネイティブ型ではないと思います。C++はそれをunsigned int
実際に型として扱います。
この場合、GCCのエラーメッセージは最適ではありません。Clangは、元のタイプのを出力することで、混乱を抑えたメッセージを表示します
—
cpplearner
clr
。
@cpplearnerうん、そういうわけで私
—
公園
enum type
はunsigned int
C ++のように扱うと思った。
enum X
とは異なる独自のタイプですint
enum
aはunsigned int
?