我正在使用C++在SDL上创建一个Gui库.(不要问我原因,为了理解Gui库是如何制作的,我只是为了从实践中获得一些知识.)而且我想创建一个像gtk +或wxWidgets这样的信号连接系统......
g_signal_connect(mybutton,"clicked",gtk_main_quit); //Gtk+
EVT_MENU(wxID_EXIT,OnQuit); //WxWidgets
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用函数指针来做到这一点.但是如何将这些函数添加到主循环中?
或者有更好的方法吗?
最简单的方法是从库中借用它,例如boost::signal或boost::signal2.下一个最好的事情是实现自己的,但借用库中的大多数功能boost::bind(如启用连接)或使用C++ 0x功能来简化客户端的通用连接(std::function/ boost::function).
我建议您使用boost和他们的signals2库,因为有很多事情你可以做错,并已在那里解决.
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |