C++实现反射
设计模式里面反射用的很多,还有.Net,java里面反射机制已经很成熟了,而C++貌似一直没有要支持反射的迹象
试着自己想想解决办法,首先想到的就是利用工厂模式,很简单,利用一个字符串 new出相应的对象,代码大概是这样的
if(className == "A")
{
return new A();
}
一般来说是可以实现了,可是如果要实现反射的对象非常多,这个工厂类就会非常大而且很可能要写好几个这样的工厂类,而且一些简单对象,是使用这样的方式很不方便。
于是考虑到其实反射就是用一个字符串或者类似的东西new出一个对象 如果我们可以写一个类似new ClassName的函数就行了,于是立刻想到了宏,比如说
如下定义:
#define NEW_OBJECT(ClassName) new ClassName;
然后使用:
Obj* c = NEW_OBJECT(Obj);
就能够实现反射了
当然也可以把宏定义成函数的形式;
网上搜了下,大概也都比较认可这样的方法,还有个说用回调函数指针实现的,木有看懂..T_T