1. 程式人生 > >C++ 中列舉變量出現定義重複

C++ 中列舉變量出現定義重複

在使用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;