要解决绑定非静态函数到回调函数的问题,可以使用以下方法:
#include
#include
class MyClass {
public:
void myFunction(int a) {
std::cout << "Callback function called with " << a << std::endl;
}
};
int main() {
MyClass obj;
std::function callback = [&obj](int a) { obj.myFunction(a); };
// 调用回调函数
callback(5);
return 0;
}
#include
#include
class MyClass {
public:
void myFunction(int a) {
std::cout << "Callback function called with " << a << std::endl;
}
};
int main() {
MyClass obj;
std::function callback = std::bind(&MyClass::myFunction, &obj, std::placeholders::_1);
// 调用回调函数
callback(5);
return 0;
}
无论是使用lambda函数还是std::bind函数,都可以将非静态成员函数绑定到回调函数中。这样就可以将类的成员函数作为回调函数使用了。
下一篇:绑定服务并在同一个方法中使用失败