C++11 作用域枚举类型

原创 2018年04月16日 17:50:05
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;

 

欢迎补充,一同进步

枚举类型

-
  • 1970年01月01日 08:00

作用域内枚举(C++11)

//作用域内枚举 #include using namespace std; /* 下面这两种定义枚举的方式有错误,错误提示为枚举数sum重定义。 在C++11之前我们不能在类中定义两个枚...
  • linukey
  • linukey
  • 2015-06-18 10:23:57
  • 1212

有缺陷的枚举类型 和 C++11中的强类型枚举

首先第一点,我们要弄清一个概念,那就是枚举类型的名字都在其父作用域空间 可见的。举个例子就一目了然了。 enum Type { General, Light, Medium, Heavy }; en...
  • friendbkf
  • friendbkf
  • 2015-08-17 17:12:35
  • 1966

C++11强类型枚举

C++11强类型枚举
  • daoming1112
  • daoming1112
  • 2017-02-08 20:31:31
  • 1164

C++枚举类型讨论

Technorati 标签: C++,enum枚举类型enum,即enumeration的前四个字母,从字面上就可以看是它定义的值就是某一种值的穷举,例如一年中的12个月,一周中的七天、性别等。假设在...
  • Nocky
  • Nocky
  • 2010-05-11 00:16:00
  • 3858

C++11 强类型enum

旧式enum问题容易被隐式转换成int默认情况下enum的每一项都有一个整数对应,可以显式指定或者从前一个自增得到。 旧式enum的类型限制是: 禁止不同枚举体之间的赋值 禁止整形向枚举体的隐式转...
  • u010487568
  • u010487568
  • 2016-12-14 18:40:36
  • 274

c++ enum 类型

1.定义:一种新类型且属于字面值常量类型:将一组 整形常量 组织在一起。 2.限定作用域枚举类型定义:enum class(struct) classnameenum class open_mode...
  • chayalikemei
  • chayalikemei
  • 2016-08-20 11:52:52
  • 449

C++11强类型枚举——枚举类

C++11强类型枚举——枚举类
  • u012333003
  • u012333003
  • 2014-03-06 11:25:29
  • 5849

Modern C++(六)强类型枚举enum

我们都知道在C++11前的枚举类型是默认为int类型,不是强类型的,所以毫无关系的两个枚举类型可以进行比较enum EnumA { A = 1, B = 2 };enum EnumB ...
  • cai6811376
  • cai6811376
  • 2016-11-03 00:05:31
  • 410

enum类型的使用

public enum Gender { MAN{ public String getTitle(){return "男";} }, WOMAN{ public String get...
  • mazhimazh
  • mazhimazh
  • 2014-08-29 11:16:31
  • 1285
收藏助手
不良信息举报
您举报文章:C++11 作用域枚举类型
举报原因:
原因补充:

(最多只允许输入30个字)