Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中嵌套类型的快捷方式+;班_C++_Enums - Fatal编程技术网

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)
唯一标识该类型。