use*_*501 5 c++ enums typedef c++11 enum-class
我有一个这样的枚举:(实际上,它是一个枚举类)
enum class truth_enum {
my_true = 1,
my_false = 0
};
Run Code Online (Sandbox Code Playgroud)
我希望能够将my_true公开给全局命名空间,以便我可以这样做:
char a_flag = my_true;
Run Code Online (Sandbox Code Playgroud)
或至少:
char a_flag = (char)my_true;
Run Code Online (Sandbox Code Playgroud)
而不是这个:
char a_flag = truth_enum::my_true;
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我尝试过这样的事情:
typedef truth_enum::my_true _true_;
Run Code Online (Sandbox Code Playgroud)
我收到错误:枚举类中的my_true,truth_enum没有命名类型
我的猜测是my_true是一个不是类型的值.有没有其他方法可以在我的程序中启用此功能?
不理想,但我可以这样做:
enum class : const char { ... };
const char const_flag_false = truth_enum::my_false;
Run Code Online (Sandbox Code Playgroud)
解决方案很简单,我犯的错误是使用enum class而不是枚举。
是的,所以实际上仍然有点困惑 - 我现在可以使用如下值:
bool aboolean = (bool)my_true;
Run Code Online (Sandbox Code Playgroud)
而不必这样做:
bool aboolean = (bool)truth_enum::my_true;
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
| 归档时间: |
|
| 查看次数: |
3564 次 |
| 最近记录: |