class A {
public:
std::function<void(int)> f_;
void print_num(int i) {
cout << i;
}
void setFuntion(std::function<void(int)> f) {
f_=f;
}
void run() {
setFunction(print_num);
}
};
这不起作用。我得到note: no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘std::function<void(int)>’
和其他错误。
如果我把print_num
的定义放在课外。一切正常。我尝试添加&A::
,A::
和this.
没有任何帮助。
答案 0 :(得分:3)
print_num
是一个非静态成员函数,这意味着它具有类型为A*
的隐式第一个参数。例如,您可以使用lambda:
void run() {
auto myself = this;
setFunction( [myself] (int i) { myself->print_num (i); } );
}
或使用bind
,请参阅此处
c++ Trouble casting overloaded function: <unresolved overloaded function type>