信號槽是偉大的工具,可是如何能更好的使用它?相比於直接函數調用,有三點值得咱們的注意。c++
基本功能有:安全
sigslot優勢多線程
sigslot缺點架構
slot函數(被回調的函數)就是普通的成員函數,但有如下限制:函數
#include "sigslot.h"
//在sigslot.h的420,將: typedef sender_set::const_iterator const_iterator; //改成: typedef typename sender_set::const_iterator const_iterator;
class mySg { sigc::signal0<> sg1; // 無參數 sigc::signal2<char*, double=""> sg2; // 2個參數 }
class mySlot: public : has_slots<> { public: void on_func1(){} // 無參數,與信號對應 void on_func2(char*, double)(){} // 2個參數 }; mySg sig; mySlot slt; sig.sg1.conncent(&slt,&mySlot::on_func1); sig.sg2.conncent(&slt,&mySlot::on_func2);
sig.sg1.disconnect(&slt); sig.sg1.disconnect_all();
sig.sg1.emit(); sig.sg2("str",0.1);