c++ delegate怎样进行事件处理

   2024-10-06 6780
核心提示:在C++中,可以使用函数指针来实现类似于C#中的delegate功能,从而实现事件处理。以下是一个简单的示例代码:#include iostream#i

在C++中,可以使用函数指针来实现类似于C#中的delegate功能,从而实现事件处理。以下是一个简单的示例代码:

#include <iostream>#include <functional>class Event {public:    // 定义一个函数指针类型,用于代表事件处理函数    typedef std::function<void()> EventHandler;    // 添加事件处理函数    void addHandler(EventHandler handler) {        _handlers.push_back(handler);    }    // 触发事件    void raiseEvent() {        for (auto handler : _handlers) {            handler();        }    }private:    std::vector<EventHandler> _handlers;};class Button {public:    Event onClick;    void click() {        std::cout << "Button clicked!" << std::endl;        onClick.raiseEvent();    }};int main() {    Button button;    // 添加事件处理函数    button.onClick.addHandler([]() {        std::cout << "Event handler 1 called!" << std::endl;    });    button.onClick.addHandler([]() {        std::cout << "Event handler 2 called!" << std::endl;    });    // 触发事件    button.click();    return 0;}

在上面的示例中,我们通过定义一个Event类来管理事件处理函数,然后在Button类中创建一个Event类型的成员变量onClick来代表按钮的点击事件。通过调用addHandler函数来添加事件处理函数,并在click函数中触发事件。在main函数中,我们创建一个Button对象并添加两个事件处理函数,然后点击按钮触发事件。

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

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