今日、見たことのない構文を見つけました。
enum MyEnum{ FOO = 0, ABA, DADA, }
....
MyEnum test;
std::uint8_t some_number(3);
test = MyEnum(some_number);
ここで正確に何が起こりますか?列挙型はクラスのように扱われますか? それともこれは単なるキャストですか?
今日、見たことのない構文を見つけました。
enum MyEnum{ FOO = 0, ABA, DADA, }
....
MyEnum test;
std::uint8_t some_number(3);
test = MyEnum(some_number);
ここで正確に何が起こりますか?列挙型はクラスのように扱われますか? それともこれは単なるキャストですか?
test = MyEnum(some_number);
ここでsome_number
は明示的に列挙型に変換しています。このような変換の結果は、値が列挙の範囲内にない限り、未定義です。
MyEnum は、次の 3 つの値を持つと宣言されています。
FOO: 0
ABA: 1
DADA: 2
std::uint8_t
some_number
値に初期化されます3
。この値は値にキャストされMyEnum
ます。3
値から値へのマッピングが存在しないためMyEnum
、おそらく未定義のEnum
値がtest