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
?为什么?
答案 0 :(得分:4)
Color3
和 Color4
都是强类型
没有。试试这个:
int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'
遗留枚举可隐式转换为整数,但 enum class
是它自己的类型。