如何在C++中使用回调函数实现事件驱动?
时间: 2024-11-03 16:15:19 浏览: 17
在c和c++中实现函数回调
在C++中使用回调函数实现事件驱动编程主要是为了响应某种事件并执行预设的操作。这里是一个简单的例子:
1. **定义回调函数**:
```cpp
typedef void (*CallbackFunction)(void* context); // 定义一个回调函数类型,接收一个任意类型的上下文指针
// 假设我们有一个智能设备类,它有一个待执行的动作
class SmartDevice {
public:
void registerCallback(CallbackFunction callback, void* context) {
this->callback = callback; // 将回调函数存储在类实例中
this->context = context; // 存储上下文信息
}
private:
CallbackFunction callback; // 回调函数
void* context; // 上下文指针
};
```
2. **设置事件**:
```cpp
Light light;
light.registerCallback(light_on_callback, &deviceContext); // 注册灯光打开的回调
// 假设light_on_callback是一个接受设备上下文的函数
void light_on_callback(void* context) {
static_cast<Light*>(context)->turnOn(); // 调用具体的设备方法
}
```
3. **触发事件**:
当外部系统(如用户的命令)触发`on`事件时,设备会调用自己的回调函数:
```cpp
void controlSystem() {
light.on(); // 执行设备的开灯操作,实际上是调用已注册的回调
}
```
阅读全文