读书人

C++ 包装枚举门类

发布时间: 2013-03-10 09:38:39 作者: rapoo

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;}


读书人网 >C++

热点推荐