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

posted @ 2010-02-28 22:52  gin@wzl  阅读(1364)  评论(3编辑  收藏  举报