C++枚舉類型Enum及C++11強枚舉類型用法


  C++中的枚舉類型常常和switch配合使用,這里用一個簡單的switch控制鍵盤回調的代碼片段來說明枚舉的用法:

    //W A S D 前、后、左、右行走
    enum Keydown{ Forward='w', Back='s', Left='a', Right='d'
    }key;

    while (true){
        if (_kbhit()){//接受鍵盤回調
            key = Keydown(_getch());
            switch (key){case ('w') ://按w 往前走
            {
                Move(0.f, 0.f, -0.1f);
                break;
            }
            case ('a') ://按a 朝左走
            {
                Move(-0.1f, 0.f, 0.f);
                break;
            }
            case('s') ://按s 往后走
            {
                Move(0.f, 0.f, 0.1f);
                break;
            }
            case('d') ://按d 朝右走
            {
                Move(0.1f, 0.f, 0.f);
                break;
            }default:
                continue;
            }
        }
    }

  在C++11之前的弱枚舉類型,若是同一作用域下有兩個不同的枚舉類型,但含有相同的枚舉常量會產生二義性,比如:

enum EnumType1{Yang,Li};
enum EnumType2{Li,Zhang};

  這樣是不正確的。

  C++11中新添加的強枚舉類型用class關鍵字來聲明,如:

enum class Enumeration{
    E1=10
    E2=20
    E3,
    E4,
};

  強類型枚舉之所以能解決在不同枚舉類下同枚舉值名的問題,是因為在使用強枚舉類型的枚舉名時,必須指明所屬范圍,比如:Enum::E1,而單獨的E1則不再具有意義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM