C++ 事件分发 绑定类函数
时间: 2023-11-14 21:23:25 浏览: 94
C++ 委托 fastdelegate使用,实现类函数回调绑定
在 C++ 中,可以使用函数指针或者函数对象来实现事件分发。如果想要绑定类成员函数作为事件处理函数,可以使用以下两种方法:
1. 使用函数指针和静态成员函数
定义一个静态成员函数作为事件处理函数,将类实例的指针传递给该函数。然后将该静态成员函数的指针作为事件处理函数传递给事件处理器。
示例代码:
```
class MyClass {
public:
void OnEvent() {
// 处理事件
}
static void EventHandler(void* instance) {
MyClass* thisPtr = static_cast<MyClass*>(instance);
thisPtr->OnEvent();
}
};
// 绑定事件处理函数
eventHandler = &MyClass::EventHandler;
```
2. 使用 std::function 和 Lambda 表达式
使用 Lambda 表达式定义一个闭包函数,将类实例的指针作为 Lambda 表达式的捕获变量,然后将该闭包函数作为事件处理函数传递给事件处理器。
示例代码:
```
class MyClass {
public:
void OnEvent() {
// 处理事件
}
};
// 创建事件处理函数
auto eventHandler = [this] { this->OnEvent(); };
// 绑定事件处理函数
dispatcher.RegisterHandler(eventType, eventHandler);
```
以上是两种常用的方法,可以根据实际情况选择适合自己的方式。
阅读全文