一个简单的RTTI实现

/ 0评 / 0

Published by orzz.org(). (https://orzz.org/%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84rtti%e5%ae%9e%e7%8e%b0/)

RTTI是"Runtime Type Information"的缩写,意思是:运行时类型信息.它提供了运行时确定对象类型的方法.

最近在写的一些东西,不想使用MFC之类的框架,但是却在很多地方需要根据名称确定指针的转换类型或者利用抽象工厂生产抽象的类对象指针...

我很不喜欢不容易维护且难看的"switch case",而C++本身的RTTI功能又显得很单薄...干脆自己写一个简单的实现好了.

下面的实现参考了MFC的RTTI机制,因为它的方法本身也不复杂,而且使用上也比较简单.

RTTI.h:

RTTI.cpp:

在"struct TypeInfo"中我用到了许式伟StdExt库,若要单独使用的话需要把"Map"改为"map",使用stl的map完成同样的功能,并删除掉带有"GCAlloc"的语句.

此RTTI在使用上类似MFC的RTTI,所有需要用到RTTI功能的类必须继承自"class CBaseObj".

使用示例:

Show.h

Show.cpp:

Published by orzz.org(). (https://orzz.org/%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84rtti%e5%ae%9e%e7%8e%b0/)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据