C++ 中列舉變量出現定義重複
阿新 • • 發佈:2019-01-25
在使用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;