在使用C++的枚举过程中会出现枚举变量重复的情况,特别是这两个枚举的作用域相同的情况下,如:
enum HOUSE {
big,
small
};
enum COMPUTER {
big,
small
};
编译的时候,就会报错:
错误 1 error C2365: “big”: 重定义;以前的定义是“枚举数” e:\test\qtguitest\win32newmem\maincpp.cpp 20 1 Win32NewMem
错误 2 error C2365: “small”: 重定义;以前的定义是“枚举数” e:\test\qtguitest\win32newmem\maincpp.cpp 22 1 Win32NewMem
就会出现如上的重复定义的错误。
解决:
C++ 11提供了一种新的枚举类,其枚举的作用域为类:
enum class HOUSE {
big,
small
};
enum class COMPUTER {
big,
small
};
这样编译的时候就不会出错了。
使用要加上枚举名来限定枚举量:
HOUSE h = HOUSE::big;
COMPUTER c = COMPUTER::small;