C++ sigslot的使用
这篇学习笔记应该是去年写的,现在把他放在博客上。
github上也有相应的c库,或者其他相对应的库
背景
1.工作中使用这种消息通知机制signals/slots
2.参考libjingle库,原始sigslot库(sigslot.sourceforge.net)
3.直接在以下环境中使用原始sigslot.h头文件会出现问题
实例
环境:编译器Dev-C++,window7-64
sample代码
123456789101112131415161718192021222324252627282930313233343536373839404142 #include <iostream>#include "sigslot.h"#include <windows.h>//为了在widnow中使用Sleep函数using namespace sigslot;/* run this program using the console pauser or add your own getch, system("pause") or input loop */class Sender{public :sigslot::signal2<std::string,int> signalSender;void help1(){signalSender("Help!",1);}void help2(){signalSender("Help,hahha,just test",2);}};class Receiver:public sigslot::has_slots<>{public:void onReceiver(std::string message,int type){if(type==1){std::cout<<"correct slot"<<std::endl;}else{std::cout<<"wrong slot"<<std::endl;}}};int main(int argc, char** argv) {Sender sender;Receiver rec;sender.signalSender.connect(&rec,Receiver::onReceiver);Sleep(3000);sender.help1();Sleep(3000);sender.help2();Sleep(3000);sender.signalSender.disconnect(&rec);return 0;}
siglots.h修改
为了能够运行,还要对siglots.h进行修改
|
|
输出:
==correct slot==
==wrong slot==
参考
- typename报错 https://sourceforge.net/p/sigslot/bugs/13/
- libjingle库使用的sigslots.h
-