在 class class 中使用枚举 class 是不必要的

Is using a enum class inside of a class class un-necessary

首先我应该说我是 OOP 的新手。我正在尝试编写一个可移植的 class,它可能会在多个程序中使用。 class 需要多个枚举列表来存储仅与 class 相关的信息,因此我计划将枚举嵌套在 class 中。我的问题是


#include <iostream>

enum class Color {
    red     = 0,
    green   = 1,
    blue    = 2
};

class CodeLibray {
public:
    enum Color2 {
        red     = 0,
        green   = 1,
        blue    = 2
    };
    enum class Color3 {
        red     = 0,
        green   = 1,
        blue    = 2
    };
    Color color;
    Color2 color2; 
    Color3 color3;
}; 

int main(){
    CodeLibray c;
    c.color = Color::red;
    c.color2 = CodeLibray::Color2::blue;
    c.color3 = CodeLibray::Color3::blue;
}
  • Is there any reason to use an enum class inside a class, or should I just use enum? Just curious. I posted sample code for reference below.

很明显,如果省略 enum classCodeLibray 中定义的 enum 值将变得不明确。

  • Also, If I want enums to be accessible for assigning public member values but I do not want values in the enum to be changed is this possible?

我不太明白你的意思。只是在黑暗中拍摄,类似于以下内容?

enum Color2 {
    red     = ::red,
           // ^^ Refer to the enum declaration in the global namespace
    green   = ::green,
    blue    = ::blue
};
enum class Color3 {
    red     = ::red,
    green   = ::green,
    blue    = ::blue
};