调用对象C++。C++中的反射
我有一个方法类、字段类和对象类 比如说,我有一个叫丹尼尔的男性对象。 班上的男同学有一个叫increaseAge的方法,可以将Daniel的年龄增加1岁。 丹尼尔有一个智力场龄 如何在Daniel上调用方法increaseAge调用对象C++。C++中的反射,c++,reflection,C++,Reflection,我有一个方法类、字段类和对象类 比如说,我有一个叫丹尼尔的男性对象。 班上的男同学有一个叫increaseAge的方法,可以将Daniel的年龄增加1岁。 丹尼尔有一个智力场龄 如何在Daniel上调用方法increaseAge typedef void(*Func)(Object*); class Method{ private: std::string nameMethod; Func f; public: Method(std::string name,Func
typedef void(*Func)(Object*);
class Method{
private:
std::string nameMethod;
Func f;
public:
Method(std::string name,Func fun){
nameMethod=name;
f=fun;
};
/*virtual void invoke(Object* const obj);
if Object has method, then invoke method on obj.
else > throw MethodNotFound.
*/
};
#endif /* METHOD_H_ */
我的main.cpp如下所示:
#include <iostream>
#include <string>
#include "Field.h"
#include "Method.h"
using namespace std;
void increaseAge(Object* obj){
age++;
}
int main(){
Method* m2 = new Method("increaseAge",increaseAge);
Object Daniel = new Male;
m2.invoke(Daniel);
}
放一些编译代码,问问你哪里有困难。你发布的代码有太多错误。作为一个旁注,C++没有像java那样的反射,因为它被编译成汇编代码而不是字节代码。为什么不使用像STD::map?也许这不是实现反射系统的合适时机。在C++中,具有相同签名的函数和方法不是相同的类型,因为方法隐式地传递这个指针。我建议您查找指向方法的指针,并将您的方法类更改为带有指向方法的指针的模板。