中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++ delegate怎樣進行事件處理

c++
小樊
85
2024-07-15 23:56:49
欄目: 編程語言

在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對象并添加兩個事件處理函數,然后點擊按鈕觸發事件。

0
芦溪县| 垦利县| 始兴县| 法库县| 宜春市| 宁都县| 临高县| 大兴区| 博客| 沙田区| 龙陵县| 白玉县| 湖州市| 新巴尔虎左旗| 德江县| 信丰县| 中超| 锡林浩特市| 乌苏市| 宁乡县| 伊宁县| 兰溪市| 咸宁市| 墨脱县| 安康市| 麦盖提县| 华宁县| 敖汉旗| 顺昌县| 乐昌市| 上林县| 辰溪县| 仙桃市| 望城县| 漠河县| 怀仁县| 若羌县| 两当县| 开封县| 巩留县| 五莲县|