C++ Reflection 的简单实现 (反射)

本文介绍了一种简单的C++反射实现方法,通过宏定义和全局注册类创建函数,实现对象的动态创建。文章给出了详细代码示例,包括`RegisterReflectionClass`宏、`ObjectFactory`静态方法以及如何注册和使用反射类。
摘要由CSDN通过智能技术生成
之前被一些脚本语言惯怀了,重新写C++代码居然有点不适应。最明显的是C++没有语言层面的反射机制。回想QT是有反射的,但人家是牛X到自己实现了一个moc层,从根本上解决了这个问题。而我只是想实现一个轻量化的解决方案,最好能马上上手用,最好是类似修饰类一样的东西,可以和现有代码兼容。网上搜了下,发现没有一个我喜欢的方案。但是受他们的启发,自己实现了一个。
思路是这样滴,我想要这样敲代码ReflectionClass *ptr = ObjectFactory::createObject("ReflectionClass");

ObjectFactory怎么知道如何创建ReflectionClass呢?自然是需要给ObjectFactory一个注册函数,我可以定义一个全局的hash容器,来装每个类对应的创建函数。每个类在定义好之后,自己把自己的创建函数注册进去。这样就万事大吉啦。
进一步想到,一般需要在main函数执行之前,把所有类注册完毕。我定义一个小的注册类模板,在它的构造函数里进行注册,每个类定义好之后,再定义一个相应的全局变量,这样注册函数就能先于main函数运行了。
最后,把这些过程写成宏,调用的时候就能一句话完成上述全部的工作。

说的太复杂了,还是直接看代码简单一些。

#ifndef _REFLECTION_
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值