Ale*_*ins 3 c++ enums templates typedef shorthand
我有一个相当复杂的对象,
MyNamespace::MyClass::MySubStruct
Run Code Online (Sandbox Code Playgroud)
有一个
enum
{
ONE = 1,
TWO = 2
};
Run Code Online (Sandbox Code Playgroud)
现在我有另一个具有模板参数的类
template <unsigned int x> class Foo;
Run Code Online (Sandbox Code Playgroud)
目前我按如下方式初始化B.
Foo<MyNamespace::MyClass::MySubStruct::ONE> MyFoo
Run Code Online (Sandbox Code Playgroud)
这很好,但它有点太冗长,特别是考虑到我将这个类初始化了大约一百次.
我想写一些类似的东西:
typedef MyNamespace::MyClass::MySubStruct::ONE MyONE
Foo<MyOne> MyFoo
Run Code Online (Sandbox Code Playgroud)
当然,这不会编译,也不会将它声明为类中的const unsigned int.如何优雅地做到这一点?
枚举器是值,而不是类型.如果您只需要这个特定的枚举器,请声明一个常量:
const auto MyONE = MyNamespace::MyClass::MySubStruct::ONE;
Run Code Online (Sandbox Code Playgroud)
如果您需要的不仅仅是这个,那么为此添加一个typedef MySubStruct
并通过它访问枚举器是可行的.