jake1036

sigslot库学习

     sigslot 库学习

  

      sigslot库 实质上是一个对象之间传递消息的库。

      一些复杂的工程,包含有大量的类。造成对象之间耦合度非常之大。

     该库实际上模拟了信号的发送对象send,以及信号的接受对象recv。

     然后将send对象的信号函数connect到对应的接收对象的函数实现。

     此时尽管调用send对象的类成员函数即可以完成recv对象的一些操作。

     这样在send对象中就不需要拥有recv对象的句柄,减小了耦合性。
  
   示例代码:
   

#include "sigslot.h"
#include 
<iostream>
#include 
<string>
class Sender{

public:
  sigslot::signal2
<std::string , int> SignalDanger;
  
  
void Panic()
  
{
    SignalDanger(
"Help!" , 0);
  }

    
}
;

class Receiver : public sigslot::has_slots<>{

public :
  
void OnDanger(std::string mes, int no)
  

    std::cout
<<mes<<no;
  }


}
;

int main()
{
  Sender send ;
  Receiver recv ;
  send.SignalDanger.connect(
&recv , &Receiver::OnDanger) ;
  send.Panic() ;
  getchar() ;
}

 

posted on 2011-08-05 11:42 kahn 阅读(1786) 评论(1)  编辑 收藏 引用 所属分类: c++学习总结

Feedback

# re: sigslot库学习 2011-12-08 20:56 jemmyLiu

建议使用boost signal2  回复  更多评论   



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理