调用对象C++。C++中的反射

调用对象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

我有一个方法类、字段类和对象类

比如说,我有一个叫丹尼尔的男性对象。 班上的男同学有一个叫increaseAge的方法,可以将Daniel的年龄增加1岁。 丹尼尔有一个智力场龄

如何在Daniel上调用方法increaseAge

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++中,具有相同签名的函数和方法不是相同的类型,因为方法隐式地传递这个指针。我建议您查找指向方法的指针,并将您的方法类更改为带有指向方法的指针的模板。