Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举

  次阅读 来源:互联网(转载协议) 2015-09-27 15:00 我要评论(0)

一朋友在微信朋友圈晒了张照片,随手点开大图,带着欣赏的眼光扫了下,恩,几个月不见,又漂亮了...咦?等等,她戴的这是什么?酷炫的造型!金属边框!微型摄像头!这不是传说中的谷歌眼镜么?土豪啊,还好我们已经是朋友了...我先给了她一个赞,然后直奔主题,霸气回复道:我过几天去找你,你戴的是谷歌眼镜吧,哼哼小样,不想死的话...就让我...摸一下下可以么,我不奢求戴,摸一下就满足了...(哎,丢人啊)。

-------------------

在cocos2dx 3.0的文档里有这么一句话:以 k 开头的常量和枚举量,通常被定义为 int 或者简单的 enum 类型,现在已经被强类型枚举(enum class)所替代,这样有利于避免ChongTu和类型错误。新的格式是:| v2.1| v3.0|| kTypeValue | Type::VALUE |写到这里,我头发一甩,笔锋一转...试问:什么是强类型枚举?回答这个问题还是要从枚举的分类说起。C++11后,枚举有两种类型,一种是不限定作用域的枚举,另一种是限定作用枚举,也就是上面说的强类型枚举。1、不限定作用域枚举。创建该种枚举时名字是可选的,有如下两种方式://有命名的

enum color

{

red,

};

//无命名的

enum

{

blue,

}

首先,这种类型的枚举会自动根据需求将类型转换成整型;其次,由于没有强制性的名字限定的要求,容易造成枚举类型名字的冲突,例如:enum color1

{

red,

green,

blue,

};

enum color2

{

white,

green,//这里的green与上面的会有冲突

yellow,

};

bool HelloWorld::init()

{

int type_int = green;//编译时这里会报错

return true;

}

编译报错的原因是因为编译器不知道你要的green到底是color1的还是color2的。2、强类型枚举。定义强类型枚举需加入关键字enum 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

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...