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)
| 归档时间: |
|
| 查看次数: |
238704 次 |
| 最近记录: |