我有一个相当复杂的对象,
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 并通过它访问枚举器。
关于c++ - 缩短 C++ 枚举成员的路径(使用 typedef 或 typename),用作模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27227584/