我希望有一个强大的枚举类型。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;
using
一样的东西可以用于enum
。虽然很多人滥用了using
,但本质上并没有什么问题。 - Damonenum class
与类没有任何关系。 - Sebastian Mach