c++ event监听多事件技巧

avatar
作者
筋斗云
阅读量:0

在C++中监听多个事件可以使用回调函数或者观察者模式来实现。以下是一些技巧:

  1. 使用回调函数:可以定义多个回调函数,每个回调函数对应一个事件。当事件发生时,调用相应的回调函数来处理事件。这种方法简单直接,但可能会导致代码混乱,难以维护。
#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; } 
  1. 使用观察者模式:定义一个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++中监听多个事件的功能。可以根据具体情况选择适合的方法来实现。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!