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

Which to prefer? An enum class, or a nested unnamed enum type?

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?为什么?

Color3 and Color4 are both strong typing

没有。试试这个:

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?