EventHandler是一种设计模式,用于处理事件和通知。在C++17中,可以使用函数指针和std::function来实现EventHandler。
首先定义一个Event结构体,用于存储事件的数据和类型:
struct Event {
int type;
void* data;
};
然后定义EventHandler类,它包含一个事件处理回调函数的vector:
class EventHandler {
public:
using Callback = std::function<void(const Event&)>;
void registerCallback(Callback callback) {
callbacks_.push_back(std::move(callback));
}
void fireEvent(const Event& event) const {
for (const auto& callback : callbacks_) {
callback(event);
}
}
private:
std::vector<Callback> callbacks_;
};
使用registerCallback函数注册事件处理回调函数,使用fireEvent函数触发事件,并将事件传递给注册的回调函数。
例如,如果要处理一个名为“click”的事件,可以这样使用EventHandler:
void handleClick(const Event& event) {
// 处理click事件
}
int main() {
EventHandler handler;
handler.registerCallback(handleClick);
Event clickEvent { 1, nullptr };
handler.fireEvent(clickEvent);
return 0;
}