enum 与enum class

来源:互联网 发布:从windows.old提取驱动 编辑:程序博客网 时间:2024/05/21 08:54

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\enum.cpp(8) : 参见“TOP_LEFT”的声明
1> ..\test\enum\enum\enum.cpp(15): error C2365: “TOP_RIGHT”: 重定义;以前的定义是“枚举数”
1>          . .\test\enum\enum\enum.cpp(10) : 参见“TOP_RIGHT”的声明

2) c++ 只允许枚举体等值或者另外一个枚举体变量赋值

enum Direction d = 1;

test\enum\enum\enum.cpp(14): error C2440: “初始化”: 无法从“int”转换为“Direction”
1>          转换为枚举类型要求显式转换(static_cast、C 样式转换或函数样式转换)

3) enum class 更加类型安全


原创粉丝点击