enum 用一个类或结构体来限定其作用域,例如:定义新变量的方法和上面命名空间的相同。不过这样就不用担心类在别处被修改内容。这里用结构体而非类,一是因为本身希望这些常量可以公开访问,二是因为它只包含数据没有成员函数。
/*** @brief 上述如果 using namespace Color 后,前缀还可以省去,使得代码简化。* 不过,因为命名空间是可以随后被扩充内容的,所以它提供的作用域封闭性不高。* 在大项目中,还是有可能不同人给不同的东西起同样的枚举类型名。* 更“有效”的办法是用一个类或结构体来限定其作用域。** 定义新变量的方法和上面命名空间的相同。* 不过这样就不用担心类在别处被修改内容。* 这里用结构体而非类,一是因为本身希望这些常量可以公开访问,* 二是因为它只包含数据没有成员函数。*/
#include <iostream>
using namespace std;
/*** @brief namespace解决作用域不受限*/
namespace Color
{enum Type{RED=15,YELLOW,BLUE};
};struct Color1
{enum Type{RED=102,YELLOW,BLUE};
};/*** @brief C++11的枚举类* 下面等价于enum class Color2:int*/
enum class Color2
{RED=2,YELLOW,BLUE
};enum class Color3:char;  // 前向声明// 定义
enum class Color3:char
{RED='r',BLUE
};int main()
{// 定义新的枚举变量Color::Type c = Color::RED;cout<<"c="<<c<<endl;/*** 上述的另一种方法:* using namespace Color; // 定义新的枚举变量* Type c = RED;*/Color1 c1;cout<<c1.RED<<endl;Color1::Type c11 = Color1::BLUE;cout<<c11<<endl;Color2 c2 = Color2::RED;cout << static_cast<int>(c2) << endl;char c4 = static_cast<char>(Color3::RED);cout<<c4<<endl;char c3 = static_cast<char>(Color3::BLUE);cout<<c3<<endl;return 0;
}

c++枚举类型(二) 命名空间相关推荐

  1. c++枚举类型(二) c++11 枚举类

    C++11 标准中引入了"枚举类"(enum class),可以较好地解决如下问题. 新的enum的作用域不在是全局的 不能隐式转换成其他类型 /*** @brief 上述如果 u ...

  2. 【转】C#中枚举类型与静态变量

    C#中enum类型,相较于其他基本数据类型来说比较特殊,他的本质上是一堆整数组成的结构体,并且支持与整型的显式转化. 既然是枚举类型,那么也就是说enum中的变量是不可以轻易改变的,所以C#将枚举类型 ...

  3. TypeScript实战-04-TS枚举类型

    一,前言 上一篇介绍了TS的基本数据类型 本篇介绍TS新增的枚举数据类型枚举的应用场景有哪些 枚举的使用和种类 枚举成员及分类 常量枚举和枚举类型 二,枚举的应用场景 在JS中没有枚举类型,如果需要根 ...

  4. 现代C++新特性 强枚举类型(PC浏览效果更佳)

    文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 1. 枚举类型的弊 C++之父本贾尼·斯特劳斯特卢普曾经在他的The Design And Evolution Of ...

  5. java枚举类型及枚举集合

    文章目录 一.枚举类型 二.switch 操作 三.自定义枚举类 四.相关枚举类 4.1 EnumMap 枚举型映射/字典 4.2 EnumSet 枚举集合 一.枚举类型 /*** @author z ...

  6. c++枚举类型(一)

    传统行为¶ 枚举有如下问题: 作用域不受限,会容易引起命名冲突.例如下面无法编译通过的: #include <iostream> using namespace std;enum Colo ...

  7. thinking-in-java(19)枚举类型

    [0]开场白 1)关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用: 2)所有的枚举类都继承自 Enum,通过 enumClass.getSu ...

  8. java枚举类型季节实例_Java之枚举类

    目录 一.为何引入枚举类型(为了替代魔法值) 什么是魔法值?魔法值有哪些隐患,见另一篇文章编码规约之使用Enum枚举类替代魔法值 那么为什么不用静态变量来替换魔法值呢? 有时候,变量的取值只在一个有限 ...

  9. 求你了,不要再在对外接口中使用枚举类型了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛 ...

最新文章

  1. shell脚本实战 pdf_Shell脚本实战:日志关键字监控+自动告警
  2. 吴恩达机器学习笔记(三) —— Regularization正则化
  3. IntelliJ IDEA修改项目的包名_修改包名
  4. 刚入行程序员,未来怎么走?
  5. VMware下 Fedora 14安装VMWare Tools
  6. nginx程序访问linux任意目录,通过nginx访问linux目录
  7. linux 占用缓存前10_Linux查看内存使用情况应该使用什么命令
  8. C语言:鸡兔同笼问题(基础代码)
  9. Pandas库基础知识(一)
  10. CentOS6.7 i686上安装JDK7
  11. 获奖感想和Java学习总结
  12. 前端小白奋斗史03(css)
  13. IE10及以上CSS滤镜失效(偶然发现)
  14. Windows11 右键卡顿
  15. 2017.1直播类APP排行:斗鱼第一、YY第二、映客第三
  16. Anchor Based和Anchor Free的相爱相杀与ATSS的诞生
  17. [linux] linux sed命令删除一行/多行
  18. IDEA警告: Redundant character escape xxx in RegExp
  19. springCloud五大神兽(思维导图)
  20. 【038】MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

热门文章

  1. JavaScript中HTML的DOM
  2. Servlet重定向的过程(二)
  3. 互联网巨头们的广州“云”棋局
  4. 《AngularJS深度剖析与最佳实践》一2.2 模块
  5. mysql5.7在centos上安装
  6. UIAppearanceContainer 利器
  7. PHP 更高效的字符长度判断方法(转)
  8. Json-lib使用——JSONObject与JSONArray
  9. Python 爬取可用代理 IP
  10. LEMP构建高性能WEB服务器(第三版)