今日、見たことのない構文を見つけました。
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