C++ C+中嵌套类型的快捷方式+;班
在生成的类中,我有一个包含许多成员的匿名枚举,其中一些成员的名称很长,如下所示:C++ C+中嵌套类型的快捷方式+;班,c++,enums,C++,Enums,在生成的类中,我有一个包含许多成员的匿名枚举,其中一些成员的名称很长,如下所示: class ContainerClass { public: enum { Enum1, EnumWithLongName2 ...}; }; 可以这样表示,这些枚举只属于该类。然而,有时我会有一个很大的枚举列表(例如,在单元测试的结果列表中),当我必须用类名限定每个枚举时,这些列表会变得非常大。有没有办法在这种情况下添加快捷方式,以便我可以省略类名 我看了看,但这似乎没有帮助。其他想法?是的,有一个:a继承
class ContainerClass {
public:
enum { Enum1, EnumWithLongName2 ...};
};
可以这样表示,这些枚举只属于该类。然而,有时我会有一个很大的枚举列表(例如,在单元测试的结果列表中),当我必须用类名限定每个枚举时,这些列表会变得非常大。有没有办法在这种情况下添加快捷方式,以便我可以省略类名
我看了看,但这似乎没有帮助。其他想法?是的,有一个:a继承枚举名称,可以使用它们而无需进一步限定
因此,创建一个从ContainerClass
继承的帮助器类来定义列表。但是,helper类不打算被实例化(您不希望装箱另一个ContainerClass
base子对象),因此将列表定义为静态
成员:
class enumList : public ContainerClass {
enumList() = delete;
public:
static decltype(Enum1) list[2] = { Enum1, EnumWithLongName2 };
};
我认为您不能将匿名枚举的所有值导出到类之外。也许你可以用枚举名生成这个类?您还可以在需要时将
容器类
别名为较短的名称,这样您就可以只使用它,例如CC::Enum1
,而不是ContainerClass::Enum1
(没有Enum1
所想的那么短)。诚然,容器类别名会有所帮助。@Holt:缺少名称不是真正的问题decltype(Enum1)
唯一标识该类型。