c++ event监听多事件技巧

   2024-10-05 5560
核心提示:在C++中监听多个事件可以使用回调函数或者观察者模式来实现。以下是一些技巧:使用回调函数:可以定义多个回调函数,每个回调函

在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++中监听多个事件的功能。可以根据具体情况选择适合的方法来实现。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号