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
color1
和color2
都是弱类型。color3
和color4
都是强类型。我的问题是:
1.color3
和color4
有什么区别吗?
2.选择哪一种?color3
还是color4
?为什么?
color3
和color4
都是强类型
不,试试这个:
int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'
遗留枚举可以隐式转换为整数,但enum class
是它自己的类型。
至于更喜欢哪一个,请参见为什么枚举类比普通枚举更受欢迎?