use*_*260 205 c++ enums casting
如何在C++中将int转换为枚举?
例如:
enum Test
{
A, B
};
int a = 1;
Run Code Online (Sandbox Code Playgroud)
如何转换a
为Test :: A类型?
And*_*rew 221
int i = 1;
Test val = static_cast<Test>(i);
Run Code Online (Sandbox Code Playgroud)
bam*_*s53 71
Test e = static_cast<Test>(1);
Run Code Online (Sandbox Code Playgroud)
小智 24
你的代码
enum Test
{
A, B
}
int a = 1;
Run Code Online (Sandbox Code Playgroud)
解
Test castEnum = static_cast<Test>(a);
Run Code Online (Sandbox Code Playgroud)
Tom*_*mmy 11
剥离结束问题,“我如何将 a 转换为类型Test::A
”,而不是严格要求在那里有演员表,并且迟到几年才回答,只是因为这似乎是一个受欢迎的问题,而没有其他人提到替代方案, 根据 C++11 标准:
5.2.9 静态转换
...如果声明格式正确,则 表达式
e
可以T
使用static_cast
形式的a 显式转换为类型,对于某些发明的临时变量(8.5)。这种显式转换的效果与执行声明和初始化,然后使用临时变量作为转换结果相同。static_cast<T>(e)
T t(e);
t
因此,直接使用表单t(e)
也可以,您可能更喜欢它的整洁度:
auto result = Test(a);
Run Code Online (Sandbox Code Playgroud)