在c++中如何将int类型转换为enum类型?
例如:
enum Test
{
A, B
};
int a = 1;
我如何转换类型测试::a ?
在c++中如何将int类型转换为enum类型?
例如:
enum Test
{
A, B
};
int a = 1;
我如何转换类型测试::a ?
当前回答
int i = 1;
Test val = static_cast<Test>(i);
其他回答
int i = 1;
Test val = static_cast<Test>(i);
Test e = static_cast<Test>(1);
只是提一下,如果枚举的底层类型恰好是固定的,从c++ 17开始,可以简单地编写
enum Test : int {A, B};
int a = 1;
Test val{a};
和,当然,Test val{1};也是有效的。
相关的cppreference部分如下(重点是我的):
如果以下所有条件都为真,则可以使用列表初始化从没有强制转换的整数初始化枚举: 初始化是直接列表初始化 初始化列表只有一个元素 枚举是有作用域的或无作用域的,底层类型是固定的 转换是非窄化的
你的代码
enum Test
{
A, B
}
int a = 1;
解决方案
Test castEnum = static_cast<Test>(a);
Test castEnum = static_cast<Test>(a-1);如果你不想要子结构体1,你可以重定义枚举:
enum Test
{
A:1, B
};
在本例中Test castEnum = static_cast<Test>(a);可以用来转换a到a。