C++类中嵌套类型的快捷方式

Shortcut to nested type in C++ class

本文关键字:快捷方式 嵌套类型 C++      更新时间:2023-10-16

在生成的类中,我有一个匿名枚举,其中有许多成员,有些成员的名称很长,如下所示:

class ContainerClass {
public:
  enum { Enum1, EnumWithLongName2 ...};
};

可以表示这些枚举仅属于该类。然而,有时我会有一个这些枚举的大列表(例如,在单元测试的结果列表中),当我必须用类名限定每个枚举时,它们会变得非常大。在这种情况下,有没有办法添加快捷方式,这样我就可以省略类名?

我查看了C++的类型别名,但这在这里似乎没有帮助。其他想法?

是的,有一个:派生类继承枚举名称,并且可以在没有进一步限定的情况下使用它们。

因此,创建一个继承自ContainerClass的助手类来定义列表。但是,helper类不是要实例化的(您不想装箱另一个ContainerClass基子对象),所以将列表定义为static成员:

class enumList : public ContainerClass {
        enumList() = delete;
    public:
        static decltype(Enum1) list[2] = { Enum1, EnumWithLongName2 };
};