qt a类和b类在c类中使用std::bind绑定a类和b类回调函数式列
时间: 2024-08-14 16:09:32 浏览: 57
在C++中,你可以使用C++11引入的`std::bind`功能来将A类和B类的回调函数绑定到C类的对象上。`std::bind`允许你在运行时动态地创建一个函数对象,这个对象可以代表原始函数的行为。例如:
```cpp
class A {
public:
void myCallback() { /* A类的回调函数 */ }
};
class B {
public:
void anotherCallback() { /* B类的回调函数 */ }
};
class C {
private:
std::function<void()> aCallback;
std::function<void()> bCallback;
public:
void bindFunctions(A& aInstance, B& bInstance) {
// 绑定A类的回调函数
aCallback = std::bind(&A::myCallback, &aInstance);
// 绑定B类的回调函数
bCallback = std::bind(&B::anotherCallback, &bInstance);
}
void callBoundFunctions() {
aCallback(); // 调用A类的回调
bCallback(); // 调用B类的回调
}
};
```
在这个例子中,当你创建C类的实例并调用`bindFunctions`方法时,它会把A类和B类的回调函数分别绑定到`aCallback`和`bCallback`成员函数指针上。然后在`callBoundFunctions`中,可以直接通过这些绑定的函数对象来调用原生的回调。
阅读全文