c++ - 没有明确范围的强类型枚举?

标签 c++ enums c++11

我想要强枚举类型。 C++0x 具有此功能,但不幸的是,它们还需要明确的作用域:

enum class E {e1, e2, e3};
E x = E::e1; //OK
E y = e1; //error

有时这是可取的,但有时只是不必要的冗长。标识符本身可能足够唯一,或者枚举可能已经嵌套在类或命名空间中。

所以我正在寻找解决方法。在周围范围内声明枚举值的最佳方式是什么?

最佳答案

如果您希望值在周围范围内可见,只需添加几个常量:

enum class E {e1, e2, e3};

const E e1 = E::e1;
const E e2 = E::e2;
const E e3 = E::e3;

关于c++ - 没有明确范围的强类型枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6978811/

相关文章:

c++ - 为什么我不能用 `= delete;` 声明一个纯虚函数?

c++ - 制作 : c: command not found

c++ - 无法与 typedef 成为 friend : any particular reason?

c++ - 如何在 C++ 中读取性能计数器

c++ - 在C++中以分隔符读取文件

c++ - 将可变参数模板粘合到可变参数函数

c++ - tao_idl -GSTL 不映射 std::string

Java Access Enum的具体方法?

swift - 如何获取 Swift 枚举的计数?

java - 使用 @ElementCollection 映射 Set<enum>