This question already has answers here:
Using generic std::function objects with member functions in one class
(6个答案)
2年前关闭。
我有类似的情况:
编译器错误是
如何在不将
这样做:
产生此错误:
这是否意味着在传递
(6个答案)
2年前关闭。
我有类似的情况:
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
的参数 最佳答案
您可以编写一个lambda捕获this
,可以在其上调用passedFunction
。
calledFunction([this](int v) { this->passedFunction(v); });
关于c++ - 将非静态成员函数传递为std::function ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50449052/
10-12 23:40