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