C++11 作用域内枚举

1 enum class MyEnum{
2     P1 = 1,
3     P2,
4     P3,
5     P4,
6     P5
7 };
8 
9 MyEnum myEnum = MyEnum::P2;

使用作用域的方式获取并限定P2的值。之所以要使用作用域,是为了避免歧义。比如考虑以下情况

enum class Enum1{
    P1 = 1,
    P2 = 2
};

enum class Enum2{
    P1 = 10,
    P2 = 11
};

两个枚举,里面的元素名字一样,但是如果还是执行 Enum1  myEnum = P2 的话,会出现歧义:这个P2到底是谁的P2。所以c++11中推出了这种表达方式

作用域内枚举不能直接通过cout输出,可以把他转化为int型

cout << int( myEnum ) << endl;

欢迎补充,一同进步

原文地址:https://www.cnblogs.com/Yukisora/p/8857294.html