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