C++中的反射。 C++中如何将函数作为参数传递

Reflection in C++. How to pass a func as a parameter in c++

我是 C++ 新手。所以我正在尝试做一些微不足道但不知道如何做的事情。

我有一个 Class 方法:

class Method{

private:
    std::string nameMethod;
    Func f;

public:
    Method(std::string name,Func fun){
        nameMethod=name;
        f=fun;
    };

我想创建一个名为 methDaniel 的方法类型的对象,它具有

  1. string nameMethod = addDaniel.
  2. f = 打印 "Daniel".
  3. 的函数

如何在 main.cpp 文件中执行此操作?

#include "Method.h"

using namespace std;

typedef void (*t_somefunc)();

void addDaniel(){
    cout<<"Daniel";
}


int main(){
    addDaniel();

    t_somefunc afunc = &addDaniel;
    Method* methDaniel = new Method("addDaniel",afunc);

}

将定义t_somefunctypedef移动到"Method.h"。

f 的类型从 Fun 更改为 t_somefunc

Method.h:

typedef void (*t_somefunc)();

class Method{

private:
    std::string nameMethod;
    t_somefunc f;

public:
    Method(std::string const& name, t_somefunc fun) : nameMethod(name), f(fun){}

然后,在main

Method* methDaniel = new Method("addDaniel", addDaniel);