提问者:小点点

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


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个答案

匿名用户

color3color4都是强类型

不,试试这个:

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

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

至于更喜欢哪一个,请参见为什么枚举类比普通枚举更受欢迎?