C++ 反射
(2016-12-01 15:26:58)
标签:
itqtreflection反射c |
分类: 编程技术 |
方法一:使用boost 的 reflection
boost 的 reflection 提供了一种简单的机制,允许我们为存在 reflection 的类进行
reflection 性质的行为。而对于一般的类,我们依旧是无法使用 reflection 特性的。前面在 extension
的介绍中我们也看到了一个使用 reflection 的例子。我们利用 extension 创建了所谓的
reflection_map,这将一个字符串(往往是类名)关联到一个 reflection 对象,通过这个 reflection
对象的 get_constructor 方法获得该类的构造函数,而通过 get_function
获得这个类的成员函数。利用这些就能够完成基本的 reflection 操作。
下面的例子介绍了如何为一个基本的类提供其需要的 reflection。
#include "iostream"
#include "boost/reflection/reflection.hpp"
class HelloWorld {
public:
} ;
boost::reflections::reflection
GetReflection() {
}
int
main (int argc, char* argv[] ) {
}
这里可以清楚的看到,我们只需要调用 reflection 对象的 reflect 方法,然后将需要的
constructor、成员函数乃至成员(通过 data 方法)加入。之后就能够按照我们的要求进行调用了。
方法二:使用QT的Meta-Object Compiler(moc)
后一篇:爱