【发布时间】:2013-07-24 01:35:33
【问题描述】:
我有一个这样的枚举:(其实就是一个枚举类)
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_;
我收到错误:枚举类 truth_enum 中的 my_true 没有命名类型
我的猜测是 my_true 是一个值而不是一个类型。是否有其他方法可以在我的程序中启用此功能?
不理想,但我可以这样做:
enum class : const char { ... };
const char const_flag_false = truth_enum::my_false;
【问题讨论】:
-
如果你使用枚举类,你不能避免写前缀。冗长不是问题,除非它妨碍可读性。
-
enum class的枚举数不会隐式转换为整数,因此char a_flag = my_true;无论如何都是错误的。 -
我使用了上面的转换
标签: c++ c++11 enums typedef enum-class