在C++中监听多个事件可以使用回调函数或者观察者模式来实现。以下是一些技巧:
使用回调函数:可以定义多个回调函数,每个回调函数对应一个事件。当事件发生时,调用相应的回调函数来处理事件。这种方法简单直接,但可能会导致代码混乱,难以维护。#include <iostream>#include <functional>class EventListener {public: void registerCallback(std::function<void()> callback) { callbacks.push_back(callback); } void fireEvent() { for (auto& callback : callbacks) { callback(); } }private: std::vector<std::function<void()>> callbacks;};int main() { EventListener listener; listener.registerCallback([]() { std::cout << "Event 1 occurred" << std::endl; }); listener.registerCallback([]() { std::cout << "Event 2 occurred" << std::endl; }); listener.fireEvent(); return 0;}使用观察者模式:定义一个Subject(主题)类和多个Observer(观察者)类,Subject类维护一个Observer列表,当事件发生时通知所有观察者。这种方法将事件处理逻辑与事件监听逻辑分离,使代码更清晰。#include <iostream>#include <vector>class Observer {public: virtual void onEvent() = 0;};class Subject {public: void addObserver(Observer* observer) { observers.push_back(observer); } void fireEvent() { for (auto& observer : observers) { observer->onEvent(); } }private: std::vector<Observer*> observers;};class Event1Observer : public Observer {public: void onEvent() override { std::cout << "Event 1 occurred" << std::endl; }};class Event2Observer : public Observer {public: void onEvent() override { std::cout << "Event 2 occurred" << std::endl; }};int main() { Subject subject; Event1Observer event1Observer; Event2Observer event2Observer; subject.addObserver(&event1Observer); subject.addObserver(&event2Observer); subject.fireEvent(); return 0;}通过以上两种方法,可以实现在C++中监听多个事件的功能。可以根据具体情况选择适合的方法来实现。