首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 包装枚举门类

2013-03-10 
C++ 包装枚举类型C的枚举类型与C中的枚举类型基本是一样的,它可与int类型隐式转换。但是并不等价于int类型,

C++ 包装枚举类型

C++的枚举类型与C中的枚举类型基本是一样的,它可与int类型隐式转换。但是并不等价于int类型,关于这部分的详细介绍请参考:《C++ 枚举类型的思考》


要对枚举类型进行检查必须在编译阶段想办法实现,一旦进入运行阶段枚举值就会被用整数来代替,但不一定是int类型,有可能是char、short等。

今天我想说的是,在C++中怎样来包装枚举类型让我们使用起来像用强类型一样安全。起始以下代码也不是本人发明的,而是从一个开源项目的源代码中发现的。将其摘抄出来做个笔记以便复习查看,首先是要写一个包装类,具体代码如下:

enum EON { One,           Two,                Three,                       Four};  typedef EnumWrapper<EON> TEStype;enum ETW { Fire,Six}; typedef EnumWrapper<ETW> TEWtype;int main(int argc, _TCHAR* argv[]){TEStype tsp;bool isv=tsp.isValid();  //因为每赋值,所以isv为falsetsp=Four;isv=tsp.isValid();  //已经赋值,所以isv为truetsp=4;   //编译错误,因为类型不对tsp=Fire;  //编译错误,不能将ETW类型的变量赋值给TEStype类型TEWtype wsp;wsp=tsp;  //编译错误,类型不符return 0;}


热点排行