我有一个这样的枚举:(实际上,它是一个枚举类)
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;
答案 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;
为什么会这样?