如何在C ++中实现信号和事件?

时间:2011-07-14 07:41:25

标签: c++ sdl signals

我正在使用C ++在SDL上创建一个Gui库。 (不要问我为什么,我只是为了理解Gui库是如何制作而从实践中获取一些知识。)我想制作一个像gtk +或wxWidgets这样的信号连接系统......

 g_signal_connect(mybutton,"clicked",gtk_main_quit); //Gtk+

 EVT_MENU(wxID_EXIT,OnQuit); //WxWidgets

我知道我可以使用函数指针来完成这个任务。但是如何将这些函数添加到主循环中呢?

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:7)

最简单的方法是从库中借用它,例如boost::signalboost::signal2。下一个最好的事情是实现自己的,但借用像boost::bind这样的库(启用连接)或使用C ++ 0x功能来简化客户端的通用连接(std::function / boost::function)。

我建议你使用boost及其signals2库,因为有很多事情你可以做错,并且已经解决了。