我正在使用C ++在SDL上创建一个Gui库。 (不要问我为什么,我只是为了理解Gui库是如何制作而从实践中获取一些知识。)我想制作一个像gtk +或wxWidgets这样的信号连接系统......
g_signal_connect(mybutton,"clicked",gtk_main_quit); //Gtk+
EVT_MENU(wxID_EXIT,OnQuit); //WxWidgets
我知道我可以使用函数指针来完成这个任务。但是如何将这些函数添加到主循环中呢?
或者有更好的方法吗?
答案 0 :(得分:7)
最简单的方法是从库中借用它,例如boost::signal
或boost::signal2
。下一个最好的事情是实现自己的,但借用像boost::bind
这样的库(启用连接)或使用C ++ 0x功能来简化客户端的通用连接(std::function
/ boost::function
)。
我建议你使用boost
及其signals2
库,因为有很多事情你可以做错,并且已经解决了。