当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

在C++中实现C#的delegate机制[VC/C++编程]

赞助商链接



  本文“在C++中实现C#的delegate机制[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

由于这段时间较忙,自从上次我公布了一个供初学者学习的“MFC”程序后,就没怎么写文章了.这段时间在忙新的项目,项目逻辑还算复杂,用了好多有闪光点的技术,下面我要谈论的是闪光点之一:在C++中实现C#的delegate机制.

用过C#的朋友都认为C#的确是个好语言,但有时由于特别需求,不得不用C++,在C++中要想实现C#中的Thread等也是可行的,不过代码要稍复杂.

以例子来阐明:

class  Sdk
{
public:
  void  DoSomething();
};
class  client
{
public:
  Sdk  m_sdk;
  void  DoSomething{}
  {
    m_sdk.DoSomething();
  }
  void  OnMessage()
  {
    //
  }
}

这个例子对比简单,Sdk用来实现某个功效,client是客户程序,要想在m_sdk做处理的时刻能发送告诉到client,有几个办法可以实现, 其一是发线程消息,其一是回调,但传统的回调对面向对象的支持并不好,这就是实现delegate的动身点. 下面是一个实现:

class  Delegate
{
public:
  virtual  ~Delegate(void){  }
  virtual  void  operator()(void)  =  0;
};
template <typename  C>
class  DelegateImpl  :  public  Delegate
{
private:
  typedef  void  (C::*F)(void);
  C*  m_class;
  F  m_fun;
public:
  DelegateImpl(C*  c,  F  f){  m_class  =  c;  m_fun  =  f;  }
  virtual  void  operator()(void)
  {
    if(m_class)
      return  (m_class-> *m_fun)();
  }
};


  以上是“在C++中实现C#的delegate机制[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 高配置机械在CC攻击需求做的调整
  • Windows7与XP 双系统同时安装在C盘的办法
  • 在Centos 5.2上安装Xen并成立windows 2003虚拟机
  • 在CentOS 上编译安装Memcached
  • 在CentOS 6.0安装LAMP服务器(Apache2+PHP5+MySQL)
  • 若何让QVOD播放器不在C盘建media文件而在E盘建呢~
  • <b>在CentOS下通过源码 编译安装Xen 4.1.1</b>
  • <b>在CentOS 6.0 上安装LAMP服务器( Apache2 + PHP5 + MySQL)</b>
  • 如安在CentOS安装ispCP虚拟主机掌握面板
  • <b>如安在CentOS 5.5上安装Kippo蜜罐</b>
  • 在CentOS下安装webmin的具体流程
  • <b>在CentOS下安装webmin流程</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .