用C ++反思。如何在c ++中将func作为参数传递

时间:2015-01-29 21:45:39

标签: c++ function reflection methods

我是c ++的新手。所以我正在尝试做一些微不足道但却无法弄清楚的事情。

我有一个名为Method的类:

class Method{

private:
    std::string nameMethod;
    Func f;

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

我想创建一个名为methDaniel的类型的Object,它有

  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);
    
    }
    

1 个答案:

答案 0 :(得分:2)

将定义typedef的{​​{1}}移至&#34; Method.h&#34;。

t_somefunc的类型从f更改为Fun

Method.h:

t_somefunc

然后,在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