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项目 ...
随机推荐
- AYITOJ-括号序列-栈的入门
题目描述 给定一个由括号组成的字符串 问其是否为一个合法的括号序列 合法的括号序列的定义如下 1. 空字符串是合法的括号序列 2. 若字符串A是合法的括号序列, 那么{A},[A],(A)也是合法的括 ...
- POJ - 2778 ~ HDU - 2243 AC自动机+矩阵快速幂
这两题属于AC自动机的第二种套路通过矩阵快速幂求方案数. 题意:给m个病毒字符串,问长度为n的DNA片段有多少种没有包含病毒串的. 根据AC自动机的tire图,我们可以获得一个可达矩阵. 关于这题的t ...
- linq to sql any和all的区别
Any说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).1.简单形式:仅返回没有订单的客户:var q =from c in db. ...
- LeetCode 8.字符串转换整数 (atoi)(Python3)
题目: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该 ...
- struts2文件上传,文件类型 allowedTypes对应
'.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript', 3 '.aif' : 'audio/x-aiff', 4 ...
- Ascii码 、16进制与 char
对于一个非计算机专业出身的人,以前只知道计算机中所有的数据都是以二进制形式进行存储,计算,通信的.但是人类文明中,主要的信息展现以文本的形式展现的.如果使用内存中的0和1来表示文本一直 ...
- ie中onclick问题
代码:<button > <span onclick="xxx();">确定</span></button> 在chrome和fir ...
- [转]Hessian——轻量级远程调用方案
Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...
- 使用log4j实现日志API
添加SLF4J依赖,用于提供日志API, 使用log4j作为实现 1.pom.xml添加SLF4J依赖 <!-- SLF4J --> <dependency> <grou ...
- 线性dp——求01串最大连续个数不超过k的方案数,cf1027E 好题!
只写了和dp有关的..博客 https://www.cnblogs.com/huyufeifei/p/10351068.html 关于状态的继承和转移 这题的状态转移要分开两步来做: 1.继承之前状态 ...