c++ - 创建一个结构体作为枚举类成员

标签 c++ enums

我正在为图书馆创建一个多级枚举。

  • 我想要这样的东西(不一定完全一样):
Book::Category::PROGRAMMING::C_PLUS_PLUS

其中 Book 是一个 structCategory 是(当前)一个枚举类
基本上,我想嵌套枚举

我知道我可以这样做:

Book::Category::PROGRAMMING_C_PLUS_PLUS

但这不仅会在 Category 中创建一个值列表,而且会使维护它成为一场噩梦(我尝试用 30 来做到这一点,结果是已经很头疼了)。

我想分而治之。

编辑 1:我不希望它成为 std::string 的原因是它的值可以是任何东西。我想限制 Category 的域。

不,编程不是我的库的主要部分。让我尝试一下类和继承。

基本上,我想要枚举的原因是拥有一组固定的有效常量。

<小时/>

引用文献:

最佳答案

您不能嵌套枚举,但是,您可以执行以下操作:

struct Book {
    struct Category {
        enum class PROGRAMMING {
            // ...
        };
        enum class COOKING {
            // ...
        }; 
    };
};

类似于使用链接问题中的命名空间,但由于它位于类内部并且您不能这样做,因此您可以使用另一个结构。

关于c++ - 创建一个结构体作为枚举类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394747/

相关文章:

c++ - GLSL - 尝试添加多盏灯?

c++ - 如何测试断言?

c# - C# 枚举条目的名称中可以包含连字符吗

c++ - 为什么在 Visual Studio 中使用 LLVM+Clang 时未定义 __clang__?

c++ - 使用 partial_sum 累积 vector 值

C++17/C++1z 并行使用 std::for_each

c++ - 通过函数返回枚举

Java:有 @Enumerated(STRING) 但仍然得到 ClassCastException

.net - 枚举作为 Entity Framework 5 中的键在多对多连接上抛出错误

ruby-on-rails - 在构造 SQL 查询时,ActiveRecord 是否处理按值查找 `enum` ?