建立自己的Callback机制

其实callback并不仅限于系统调用,用户根据需要,可以建立自己的Callback机制。
比如网络通讯,当接收线程(可能专门有一个类封装网络接收行为)收到数据包,
需要通知上层(可能又有一个类封装上层数据处理).那么我认为Callback最本质的特征包括两点:
注册和触发。实现可以是各种各样的形式,但机制都是如此。比如对于两个类而言,给出以下示例代码:  
   
   
  #include   <iostream.h>  
   
  class   B    
  {  
  public:  
  B();  
  void   OnGetMsg(unsigned   long   ID,const   char   *     MsgName);  
   
  private:  
  unsigned   long       m_ID;  
  };  
   
  B::B()  
  {  
  m_ID   =   1002;  
  }  
   
  void   B::OnGetMsg(unsigned   long   ID,   const   char   *MsgName)  
  {  
  cout   <<   "srcObjID   =   "   <<   ID   <<   ",   "   <<   "tgtObjID   =   "   <<   m_ID   <<",   "   <<"Message:   "   <<   MsgName   <<   endl;  
  }  
   
  class   A    
  {  
  public:  
  A();  
  void   RegisterMsg(B*   pb);  
  void   SendMsg(char*   msg);  
   
  private:  
  B   *   m_pb;  
  unsigned   long   m_ID;  
  };  
   
  A::A()  
  {  
  m_ID   =   1001;  
  m_pb   =   NULL;  
  }  
   
   
  void   A::RegisterMsg(B*   pb)  
  {  
  m_pb     =   pb;  
  }  
   
  void   A::SendMsg(char   *msg)  
  {  
  if(m_pb   !=   NULL)  
  m_pb->OnGetMsg(m_ID,msg);  
  }  
   
   
  void   main()  
  {  
   
        //产生回调的类对象a  
        A   a;  
   
        //相应回调的类对象b  
        B   b;  
   
      //A类对象注册  
      a.RegisterMsg(&b);  
   
      //A类对象触发、B类对象响应  
      a.SendMsg("i'm   callback   function");  
  }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值