将非静态成员函数作为std :: function传递

时间:2018-05-21 12:34:43

标签: c++ std-function

我有类似的情况:

class A {
    void callingFunction() {
      calledFunction(passedFunction);
    }

    void calledFunction(std::function<void(int)> foo) {
    }

    void passedFunction(int arguments) {
    }
};

编译器错误是

error: invalid use of non-static member function

如何在不passedFunction静态的情况下实现此目的?

这样做:

calledFunction(std::bind(&A::passedFunction, this);

创建此错误:

error:static assertion failed: Wrong number of arguments foor pointer-to-member

这是否意味着我必须在传递callingFunction时提供passedFunction中的所有参数?这是不可能的,因为在passedFunction

中指定了calledFunction的参数

1 个答案:

答案 0 :(得分:0)

您可以撰写lambda捕获this,可以在其上调用passedFunction

calledFunction([this](int v) { this->passedFunction(v); });