c++跨类使用回调函数
时间: 2024-08-22 17:01:08 浏览: 65
如何让类的成员函数作为回调函数
3星 · 编辑精心推荐
在C++中,跨类使用回调函数通常涉及到将一个函数指针作为参数传递给另一个对象,这个接收者可以在适当的时候调用这个回调函数。这种方式常用于设计事件驱动系统、异步操作或者需要处理结果的通用函数。
例如,你可以创建一个基类`EventDispatcher`,它有一个`registerCallback`方法,接受一个回调函数`void (CallbackType)()`的指针,然后在发生特定事件时调用这个回调:
```cpp
class EventDispatcher {
public:
template <typename CallbackType>
void registerCallback(CallbackType callback) {
callbacks.push_back(callback);
}
protected:
virtual void dispatchEvent() {
for (auto& callback : callbacks) {
callback();
}
}
private:
std::vector<CallbackType> callbacks;
};
class MyClass : public EventDispatcher {
public:
// 这里可以定义一个具体的事件处理函数
void handleMyEvent() {
// ...
}
// 跨类注册回调,这里的handleMyEvent会被EventDispatcher使用
void registerForEvent() {
registerCallback(handleMyEvent);
}
};
```
在这个例子中,`MyClass`实例通过`registerForEvent`将自己的`handleMyEvent`方法注册为`EventDispatcher`的回调。当`EventDispatcher`调用`dispatchEvent`时,所有注册的回调都会被执行。
阅读全文