Libsigc++库的使用
概述
通常在图形用户界面程序中,我们希望检测事件的代码与处理事件的代码能够分开独立出来。我们可以使用回调函数的机制,注册函数指针来注册相关的处理函数,不过,在C++中,我们可以使用类型安全的库libsigc++。
Libsigc++库中提出了槽的概念,熟悉Qt的朋友应该对槽的概念不陌生,它其实是指向一个可作为回调的函数的引用,以下三种类型的函数都可作为槽:
1. 普通函数。
2. 重载了operator()的函数子对象(类)。
3. 如果对象所属的类继承了sigc::trackable, 它的成员函数也可以作为槽。
针对第三种类型的函数,libsigc++库提供了sigc::ptr_func()和sigc::mem_func()为分别从类的静态函数和对象的成员函数中创建槽。返回值类型是signal::slot,可通过emit()或operator()调用。另外,libsigc++