在C++中,可以使用函数指针来实现类似于C#中的delegate功能,从而实现事件处理。以下是一个简单的示例代码:
#include#include class Event { public: // 定义一个函数指针类型,用于代表事件处理函数 typedef std::function EventHandler; // 添加事件处理函数 void addHandler(EventHandler handler) { _handlers.push_back(handler); } // 触发事件 void raiseEvent() { for (auto handler : _handlers) { handler(); } } private: std::vector _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对象并添加两个事件处理函数,然后点击按钮触发事件。