C ++使用传递函数

时间:2017-02-25 11:42:54

标签: c++ c++11

我有两个函数,其中一个函数作为一个参数,这个工作正常,但我想在第二个函数中调用这个传递的函数。

class XY {   
 public:

   void first(void f());
   void second();        
 };

 void XY::first(void f()){

 }

 void XY::second(){
 f(); //passed function from first()
 }

1 个答案:

答案 0 :(得分:12)

您可以使用 std :: function 存储可调用对象并稍后调用它。

class X {
    public:
        void set(std::function<void()> f) {
            callable = f;
        }

        void call() const {
            callable();
        }

    private:
        std::function<void()> callable;
};

void f() {
    std::cout << "Meow" << std::endl;
}

然后创建X实例并设置callable:

X x;
x.set(f);

稍后调用存储的callable:

x.call();