gpt4 book ai didi

c++ - 缩短 C++ 枚举成员的路径(使用 typedef 或 typename),用作模板参数

转载 作者:太空狗 更新时间:2023-10-29 20:03:38 25 4
gpt4 key购买 nike

我有一个相当复杂的对象,

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com