更喜欢哪个?枚举类还是嵌套的未命名枚举类型?

时间:2021-04-02 15:17:38

标签: c++ c++11 enums difference strong-typing

enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts

struct Color3
{
    enum { red, blue, green }; // ok, no conflicts
};

enum class Color4 { red, blue, green }; // ok, no conflicts
  1. Color1Color2 都是弱类型。
  2. Color3Color4 都是强类型。

我的问题是:

1. Color3Color4 之间有什么区别吗?

2.更喜欢哪个? Color3 还是 Color4?为什么?

1 个答案:

答案 0 :(得分:4)

<块引用>

Color3Color4 都是强类型

没有。试试这个:

int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'

遗留枚举可隐式转换为整数,但 enum class 是它自己的类型。

选择哪个,参考Why is enum class preferred over plain enum?