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

时间:2011-08-08 07:09:57

标签: c++ enums c++11

我想要强大的枚举类型。 C ++ 0x具有此功能,但遗憾的是它们还需要显式范围界定:

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

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

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

1 个答案:

答案 0 :(得分:7)

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

enum class E {e1, e2, e3};

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