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.
,但没有帮助。
setFunction( [this] (int i) { this->print_num (i); } );
也可以工作。 - kirill_igum[this]
会复制对象,所以你可能想要使用[&this]
或者只是[&]
。 - wjlthis
是一个指针,所以使用[this]
会复制这个指针”。 - JohnB