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

时间:2017-05-13 14:39:25

标签: c++ class enums enumeration

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

  • 是否有理由在课堂内使用enum class,还是应该使用enum?只是好奇。我发布了示例代码供以下参考。

  • 为什么在公开课堂上制作词汇是一个非常糟糕的主意?

#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;
}

1 个答案:

答案 0 :(得分:2)

  
      
  • 是否有理由在课堂内使用enum class,还是应该使用enum?只是好奇。我发布了示例代码   参考下文。
  •   

很明显,enum中定义的CodeLibray值如果省略enum class就会变得很暧昧。

  
      
  • 此外,如果我希望枚举可以分配公共成员值,但我不希望枚举中的值被更改,这是   可能的?
  •   

我不完全明白你的意思。只是在黑暗中拍摄,如下所示?

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
};