我正在为图书馆创建一个多级枚举。
- 我想要这样的东西(不一定完全一样):
Book::Category::PROGRAMMING::C_PLUS_PLUS
其中 Book
是一个 struct
,Category
是(当前)一个枚举类
。
基本上,我想嵌套枚举。
我知道我可以这样做:
Book::Category::PROGRAMMING_C_PLUS_PLUS
但这不仅会在 Category
中创建一个长值列表,而且会使维护它成为一场噩梦(我尝试用 30 来做到这一点,结果是已经很头疼了)。
我想分而治之。
编辑 1:我不希望它成为 std::string
的原因是它的值可以是任何东西。我想限制 Category
的域。
不,编程
不是我的库的主要部分。让我尝试一下类和继承。
基本上,我想要枚举的原因是拥有一组固定的有效常量。
<小时/>引用文献:
- Can enum class be nested?
-> 我需要创建
Book
的对象,因此它不能是命名空间。我无法理解使用模板的答案。 - Why is enum class preferred over plain enum? -> 没有回答我的问题。
最佳答案
您不能嵌套枚举
,但是,您可以执行以下操作:
struct Book {
struct Category {
enum class PROGRAMMING {
// ...
};
enum class COOKING {
// ...
};
};
};
类似于使用链接问题中的命名空间,但由于它位于类内部并且您不能这样做,因此您可以使用另一个结构。
关于c++ - 创建一个结构体作为枚举类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394747/