Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举
金属边框!
微型摄像头!
这不是传说中的谷歌眼镜么?
土豪啊,还好我们已经是朋友了...我先给了她一个赞,然后直奔主题,霸气回复道:我过几天去找你,你戴的是谷歌眼镜吧。哼哼小样。不想死的话...就让我...摸一下下能够么,我不奢求戴,摸一下就满足了...(哎。丢人啊)。-------------------
在cocos2dx 3.0的文档里有这么一句话:
以 k 开头的常量和枚举量,通常被定义为 int 或者简单的 enum 类型,如今已经被强类型枚举(enum class)所替代,这样有利于避免ChongTu和类型错误。
新的格式是:
| v2.1 | v3.0 |
| kTypeValue | Type::VALUE |
写到这里。我头发一甩,笔锋一转...试问:什么是强类型枚举?回答这个问题还是要从枚举的分类说起。
C++11后,枚举有两种类型。一种是不限定作用域的枚举。另一种是限定作用枚举,也就是上面说的强类型枚举。
1、不限定作用域枚举。
创建该种枚举时名字是可选的,有例如以下两种方式:
//有命名的
enum color
{
red,
};
//无命名的
enum
{
blue,
}
首先。这样的类型的枚举会自己主动依据需求将类型转换成整型;其次,由于没有强制性的名字限定的要求,easy造成枚举类型名字的冲突。比如:
enum color1
{
red,
green,
blue,
};
enum color2
{
white,
green,//这里的green与上面的会有冲突
yellow,
};
bool HelloWorld::init()
{
int type_int = green;//编译时这里会报错
return true;
}
编译报错的原因是由于编译器不知道你要的green究竟是color1的还是color2的。
2、强类型枚举。
定义强类型枚举需增加keywordenum class(或者等价地使用enum struct)。例如以下:
enum class color
{
red,
green,
}
使用强类型枚举时必须指明其所属范围,如color::red,而不能直接使用red。(这里需说明一下,不限定类型枚举也能够指定其范围,如上面的color1::red,但它不是强制要求的。也就是能够直接使用red。这与强类型枚举有同父异母的差别。别混淆)。
以下举个cocos2dx中的样例来看下强类型枚举是怎么回事。
//首先创建一个label
auto label_2 = LabelTTF::create("star","Arial",25);//create a label
label_2->setHorizontalAlignment(TextHAlignment::CENTER);//设置横向居中
label_2->setVerticalAlignment(TextVAlignment::CENTER);//设置纵向居中
主要还是看TextHAlignment 与 TextVAlignment,它们就是强类型枚举。以下看下源代码:
enum class TextVAlignment
{
TOP,
CENTER,//
BOTTOM,
};
enum class TextHAlignment
{
LEFT,
CENTER,//看这里
RIGHT,
};
从上面的代码就能够看出,强类型枚举中的成员都有各自的作用域。所以不用操心命名会有冲突。就像上面的这个CENTER,使用起来就是:TextHAlignment::CENTER 与 TextVAlignment::CENTER。
恩,临时就扯到这里。强类型枚举另一些其它功能大家能够自己去了解下。我就不多说了。
尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/24273309
Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举的更多相关文章
- Cocos2dx 3.0 过渡篇(三十)灰机还是3D好(Sprite3D)
如今都非常少发3.0过渡篇这一系列的博文了,原因是多方面的,一个是游戏开发进度,尽管上面并没给我什么压力,但我自己一直在赶.还有一方面是个人私生活这块.五月份确实是多事之秋,有时候真的没办法全心思去研 ...
- Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用(上)
昨天练车时有一MM与我交替着练,聊了几句话就多了起来,我对她说:"看到前面那俩教练没?老色鬼两枚!整天调戏女学员."她说:"还好啦,这毕竟是他们的乐趣所在,你不认为教练每 ...
- Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689 前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人 ...
- Cocos2dx 3.0 过渡篇(二十九)globalZOrder()与localZOrder()
前天非常难得的加班到八点...为什么说难得呢?由于平时我差点儿就没加班过.六点下班后想走就走,想留就留.率直洒脱.不拘一格.尽显男儿本色.程序猿,就是这么自信! -----------这篇博客的标题本 ...
- Cocos2dx 3.0 过渡篇(二十五)死不了的贪食蛇(触摸版)
上一篇写的贪食蛇的重力感应控制版,这一篇就讲下触摸控制版吧.额,也不知道写了那个贪食蛇教程究竟有没有获得沈老师的书,假设没有的话,看我不拿西瓜刀砍掉 偶尔E往事 的那啥! 重力版链接:http://b ...
- Cocos2dx 3.0 过渡篇(二十七)C++11多线程std::thread的简单使用(下)
本篇接上篇继续讲:上篇传送门:http://blog.csdn.net/star530/article/details/24186783 简单的东西我都说的几乎相同了,想挖点深的差点把自己给填进去. ...
- 《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)
1.简介 在前边的文章中窗口句柄切换宏哥介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题.很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭, ...
- (转载)Android项目实战(二十八):Zxing二维码实现及优化
Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...
随机推荐
- WannaCry结束了? 安专家注册域名掐断病毒传播
腾讯科技讯,(韩依民) 5 月 13 日,席卷全球的勒索病毒 WannaCry(也被称作 WanaCrypt 或 WCry),在今日晚间被互联网安全人员找到阻止其传播的方法. 据北京云纵信息技术有限公 ...
- Java之RabbitMQ(二)多mq配置
场景: springboot单项目,自身使用mq中间件处理一些业务需求,某些业务上又需要消费第三方mq消息,这时候需要我们单项目中配置多套mq,这时候,需要我们自定义多套mq相关连接工厂.模板.监听工 ...
- Mysql之DQL------基础查询
#笔记内容来自于B站尚硅谷教学视频(av49181542)use myemployees; 查询表中的单个字段 SELECT last_name FROM employees; 查询表中的多个字段 # ...
- Loadrunner 性能测试工具笔记
性能的是的基础知识 什么是负载? 系统实际用户:可能会有很多人使用同一个系统,但并不是所有用户都回同时使用该系统,所以系统的实际用户是一个容量问题,而不是负载的问题 系统在线用户:当系统用户对系统进行 ...
- JS数组 编程练习 使用Javascript语言,把以下数组 在页面显示如下图所示的图案
编程练习 使用Javascript语言,把以下数组 var arr = ['*','##',"***","&&","****&quo ...
- Leetcode93. Restore IP Addresses复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135", ...
- PostgreSQL问题解决--连接数过多
I am trying to connect to a Postgresql database, I am getting the following Error: Error:org.postgre ...
- 第十二章 Odoo 12开发之报表和服务端 QWeb
报表是业务应用非常有价值的功能,内置的 QWeb 引擎是报表的默认引擎.使用 QWeb 模板设计的报表可生成 HTML 文件并被转化成 PDF.也就是说我们可以很便捷地利用已学习的 QWeb 知识,应 ...
- nvm-windows 之nodejs 版本管理
前言 最近准备学习后端相关的东西,但是公司目前的node版本是偏低的,但是现在的node版本变化太快.刚好也有nvm这种版本管理器的存在,简直了都.兴奋之后发现,不支持windows系统,此处~~ ...
- arguments的介绍(一)
arguments 是一个类数组对象.代表传给一个function的参数列表. 1.1 arguments length arguments 是个类数组对象,其包含一个 length 属性,可以用 a ...