我有一个比较复杂的对象,
MyNamespace::MyClass::MySubStruct
有一个
enum
{
ONE = 1,
TWO = 2
};
现在我有另一个带有模板参数的类
template <unsigned int x> class Foo;
目前我按如下方式初始化B
Foo<MyNamespace::MyClass::MySubStruct::ONE> MyFoo
并且效果很好,但是它有点太冗长,特别是考虑到我将此类初始化了大约一百次。
我想写一些类似的东西:
typedef MyNamespace::MyClass::MySubStruct::ONE MyONE
Foo<MyOne> MyFoo
自然,它不会编译,也不会在类内部将其声明为const unsigned int。一个人如何优雅地做到这一点?
最佳答案
枚举器是值,而不是类型。如果只需要此特定的枚举数,则声明一个常量:
const auto MyONE = MyNamespace::MyClass::MySubStruct::ONE;
如果您不仅需要这个,还可以为
MySubStruct
添加一个typedef并通过它访问枚举器。