1) enum的功能需要一系列的#define来完成,enum 完成了一系列#define的打包收集,所以对于两个不一样的枚举体,即使枚举体的名字不同,里面的内容也不能重名。
enum Direction
{
TOP_LEFT,
TOP_RIGHT
};
enum Direction1
{
TOP_LEFT,
TOP_RIGHT
};
error C2365: “TOP_LEFT”: 重定义;以前的定义是“枚举数”
1> ..\test\enum\enum\(8) : 参见“TOP_LEFT”的声明
1> ..\test\enum\enum\(15): error C2365: “TOP_RIGHT”: 重定义;以前的定义是“枚举数”
1> . .\test\enum\enum\(10) : 参见“TOP_RIGHT”的声明
2) c++ 只允许枚举体等值或者另外一个枚举体变量赋值
enum Direction d = 1;
test\enum\enum\(14): error C2440: “初始化”: 无法从“int”转换为“Direction”
1> 转换为枚举类型要求显式转换(static_cast、C 样式转换或函数样式转换)
3) enum class 更加类型安全