1

今日、見たことのない構文を見つけました。

enum MyEnum{    FOO = 0,    ABA,    DADA, }
....

MyEnum test;
std::uint8_t some_number(3);

test = MyEnum(some_number);

ここで正確に何が起こりますか?列挙型はクラスのように扱われますか? それともこれは単なるキャストですか?

4

2 に答える 2

3
test = MyEnum(some_number);

ここでsome_numberは明示的に列挙型に変換しています。このような変換の結果は、値が列挙の範囲内にない限り、未定義です。

于 2013-06-07T10:08:32.390 に答える
0

MyEnum は、次の 3 つの値を持つと宣言されています。

FOO: 0
ABA: 1
DADA: 2

std::uint8_t some_number値に初期化されます3。この値は値にキャストされMyEnumます。3値から値へのマッピングが存在しないためMyEnum、おそらく未定義のEnum値がtest

于 2013-06-07T10:10:02.910 に答える