初始化一个枚举,如果它是一个避免强制转换的类

时间:2013-06-07 10:01:21

标签: c++

今天我找到了一些我以前没见过的语法。

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

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

test = MyEnum(some_number);

这到底发生了什么? enum将被视为一个类?或者这只是演员?

2 个答案:

答案 0 :(得分:3)

test = MyEnum(some_number);

此处some_number显式转换为枚举类型。除非该值在枚举范围内,否则这种转换的结果是未定义的。

答案 1 :(得分:0)

MyEnum被声明为具有三个值:

FOO: 0
ABA: 1
DADA: 2

std::uint8_t some_number初始化为值3。此值不会转换为MyEnum值。由于不存在从值3MyEnum值的映射,因此您可能会在Enum

中获得未定义的test