回调函数使用std::bind
时间: 2024-05-10 15:12:42 浏览: 182
std::bind 是 C++11 提供的一个函数模板,可以用来将函数对象、函数指针以及成员函数指针绑定到特定的对象或者参数上面,形成一个新的可调用对象。在使用回调函数时,std::bind 可以方便地将回调函数与其它参数一起绑定到一个函数对象上面,然后传递给其它函数进行使用。这样做可以让代码更加简洁,同时也更加灵活。
例如,假设我们有一个回调函数 void onEvent(int, double),它有两个参数,分别是 int 类型和 double 类型。现在我们需要将这个回调函数绑定到一个特定的对象 obj 上面,同时将 int 参数绑定为 42,double 参数绑定为 3.14。可以使用 std::bind 来实现:
```c++
class MyClass {
public:
void onEvent(int x, double y) {
// do something...
}
};
MyClass obj;
auto func = std::bind(&MyClass::onEvent, &obj, 42, 3.14);
```
在这个例子中,&MyClass::onEvent 是一个成员函数指针,表示要绑定的回调函数。&obj 是一个指向 MyClass 对象的指针,表示要绑定到哪个对象上面。后面的两个参数 42 和 3.14 分别表示要绑定的 int 和 double 参数。
然后可以将这个 func 对象传递给其它函数进行使用,例如:
```c++
void registerCallback(std::function<void(int, double)> callback) {
// do something...
}
registerCallback(func);
```
这样就完成了回调函数的注册。
阅读全文