typedef和enum或enum类

时间:2013-07-24 01:35:34

标签: c++ c++11 enums typedef enum-class

我有一个这样的枚举:(实际上,它是一个枚举类)

enum class truth_enum {
    my_true = 1,
    my_false = 0
};

我希望能够将my_true公开给全局命名空间,以便我可以这样做:

char a_flag = my_true;

或者至少:

char a_flag = (char)my_true;

而不是:

char a_flag = truth_enum::my_true;

这可能吗?

我尝试过这样的事情:

typedef truth_enum::my_true _true_;

我收到错误:枚举类中的my_true,truth_enum没有命名类型

我的猜测是my_true是一个不是类型的值。我可以在程序中启用此功能吗?

不理想,但我可以这样做:

enum class : const char { ... };
const char const_flag_false = truth_enum::my_false;

2 个答案:

答案 0 :(得分:1)

class定义中删除enum。我假设您被隐式转换为int而冒犯了。怎么样:

static constexpr truth_enum _true_ = truth_enum::my_true;
static constexpr truth_enum _false_ = truth_enum::my_false;

或只是

const truth_enum _true_ = truth_enum::my_true;
const truth_enum _false_ = truth_enum::my_false;

答案 1 :(得分:0)

解决方案很简单,我犯的错误是使用enum class而不是枚举。

是的,实际上仍然有点困惑 - 我现在可以使用像:

这样的值
bool aboolean = (bool)my_true;

而不是必须这样做:

bool aboolean = (bool)truth_enum::my_true;

为什么会这样?