【发布时间】:2017-08-25 11:26:01
【问题描述】:
如何在 c++ 11 中安全使用枚举?下面的代码,我正在努力工作......
我需要安全的方式以正确的方式与严格枚举进行转换。
#include <iostream>
class test{
enum class fruits:int{
apple,
banana,
pear
}m_fruits{fruits::apple};
fruits operator=(int _i){
switch(_i){
case 0:
return fruits::apple;
case 1:
return fruits::banana;
case 2:
return fruits::pear;
default:
return fruits::apple;
}
}
int operator=(fruits _f){
return static_cast<int>(_f);
}
public:
void function_worked(){
fruits f = operator=(155);
std::cout << operator=(f);
}
void function_wanted(){
fruits f = 155;
std::cout << f;
}
};
【问题讨论】:
-
你能具体说明什么不起作用吗?
-
您确定要将枚举转换为整数,反之亦然吗?这里的目标是什么?
-
function_wanted() 中的构造不可编译,但我想使用它。 function_worked() 是可行的,但这看起来像......
-
enum class的目的是禁止您尝试执行的操作。如果您要颠覆这些功能,您应该使用普通的enum -
是的,我真的很想要这个。例如设置文件中的值保存为数字,但我想解释为枚举
标签: c++ enums type-conversion