C++ 信号槽实现

xiaoxiao2021-02-28  97

  一、事件源类:  class CDataTrans {    public: CDataTrans(); ~CDataTrans(); bool Open(const unsigned int nDsnSvr, const int nPort, const int nHallId, const int nZoneId,const int nLableId); void Close(); bool SendData(const char* buffer, const int length,int ,int); bool SendData(const char* buffer, const int length,int ,int,int,int,const char* guid ); NET_STAT GetNetStat(void){ return m_DdsServerTrans.moNetStat; } void TimeOutWork(void); void Dump(void); private: void Login(); void KeepLive(); void Logout(); int UnPack(char * buffer , int& length); bool ConnectServer(void); public: sigslot::signal2<char*, int> RecvCallback;    -->定义一个信号槽函数模板 private: unsigned int    m_nDdsSvr; uint16          m_nDdsPort; CNetSocket m_DdsServerTrans; INT64 mi64LastKeepLiveTime; int m_ui32ZoneId; int m_ui32HallId; int m_ui32LableId; };  二、 自己实现一个类 class CDnsCallBack:public sigslot::has_slots<>      -->公开继承 信号槽类 { public: void OnReCall(char *RecvBuf, int nRecvBufLen)   -->事件发生后回调的函数  {     } };  三、连接信号槽 CDataTrans goDnsTrans; goDnsTrans.RecvCallback.connect(&g_dnsBack, &CDnsCallBack::OnReCall) 事件源类对象 信号模板           自己实现类对象        自己实现类中的信号槽回调函数    四 产生信号 RecvCallback(buffer, length);
转载请注明原文地址: https://www.6miu.com/read-85442.html

最新回复(0)