在 class class 中使用枚举 class 是不必要的
Is using a enum class inside of a class class un-necessary
首先我应该说我是 OOP 的新手。我正在尝试编写一个可移植的 class,它可能会在多个程序中使用。 class 需要多个枚举列表来存储仅与 class 相关的信息,因此我计划将枚举嵌套在 class 中。我的问题是
是否有任何理由在 class 中使用 enum class
,或者我应该只使用 enum
?只是好奇。我在下面发布了示例代码以供参考。
为什么在 class public 中进行枚举是一个非常糟糕的主意?
#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 class
,CodeLibray
中定义的 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
};
首先我应该说我是 OOP 的新手。我正在尝试编写一个可移植的 class,它可能会在多个程序中使用。 class 需要多个枚举列表来存储仅与 class 相关的信息,因此我计划将枚举嵌套在 class 中。我的问题是
是否有任何理由在 class 中使用
enum class
,或者我应该只使用enum
?只是好奇。我在下面发布了示例代码以供参考。为什么在 class public 中进行枚举是一个非常糟糕的主意?
#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 useenum
? Just curious. I posted sample code for reference below.
很明显,如果省略 enum class
,CodeLibray
中定义的 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
};