因为委托事件模式可以有效分离事件触发类(服务类)对于事件接收类的依赖,在其他很多语言中都引入到语言特性中,使用起来非常方便,容易理解,有利于组件开发,本人也进行了一定的研究,使用了多种方法在C++中模拟实现委托事件模式,这里分享给大家,但愿能对大家有所帮助,并欢迎指正。
具体的方法见本人的博客系列文章《在C++中模拟委托事件的方法》

解决方案 »

  1.   

    ... 内容太多,而且描述的过于纠结LZ自己的内容. 读者一时半会 看不清目的. 反正我翻了几页 是放弃了.
        
       建议:   举几个简单的例子, 形象的描述下 模式的好处. 否则读者没看的动力, 鬼知道你这模式对 我们的程序 有何种帮助...
      
       另外鉴于已经有大名鼎鼎的 boost:bind的存在, 我实在想问下 楼主, 和boost:bind搭配list或vector容器类 实现委托相比, 你的方法 优点在哪里??
      
        有点打击楼主了,不好意思. 不过很感谢楼主的分享精神! many thanks.
      

  2.   

    开发类似Delphi、C#似的组件会很有用。委托的好处就是不用自己触发事件而由别人帮你触发事件,不知道楼主有没有看过C#的委托,C#的委托是编译器级别实现的,所以隐藏了强制类型转换这样的代码。楼主写的那么些代码后面也该贴些小例子,这样更能体现你实现的委托的代码优秀处。也许是没有示例代码的缘故,个人觉得楼主的委托代码写的晦涩。
      

  3.   

    Ubuntu下的Firefox文字渲染引擎真好,看网页真销魂。
      

  4.   


    你说的很好,有时间我去在文章中加入使用的例子,因为例子很简单所以开始未加入,至于方法的优缺点,正是你没有看到文章最后,最后有对各种方法的优缺点的总结
    另外本文是属于示例型文章,所以很多代码细节做得并不好,要真用在工程中还需要对一些关键模块进行改进
    至于boost:bind,我不能说比这个好,但是要考虑到很多项目或是个人不使用boost的,C++11也不是马上就能用上的,我这里只是提供了几种比较可行的替代方案,如果读者真的仔细看过后面几个方法,还是会发现真正使用起来的简单程度是可以同C#的委托事件媲美的,而且不需要什么额外库的支持,只需要使用C++比较早期的标准语法支持就可以了,而且东西并不复杂,理解起来还是比较容易的,如果看到文章内容多就草草一代而过,估计是不知道是什么东西。本人最近才开始编写博文,所以行文水平有限,希望大家原谅,本人的目的主要在于共享,对于真的想研究这块的人我想还是有些帮助的。
      

  5.   


       恩. 那个表 我也看了. 主要是没直观的代码. 呵呵,一堆优缺点 看起来有点让人困困的. 嘿嘿嘿. 有时间 我会再仔细拜读一次.
       C++模板主要的问题 我个人意见 一直都是 1. 尽量限于库内使用, 复杂的模板语法不可以暴露在外面,毕竟很多cpper是模板厌恶者. 2. 编译时间,模板用多了,编译时间相当要命!偶尔来个错误提示,也让用户很崩溃.
       boost::bind用的东西不算复杂,已经进tr1了,所以肯定会成为和std::vector一样的东东. 我也是看现在很多开源代码已经大量使用boost了. 才下决心使用,个人感受, 不少库经编译器优化后效率几乎和最简单的直接手法一样 ,编译时间也很少, 5,6年了,boost已经有很多非常成熟和稳定的部分. bind就是其中之一,配合预编译头文件 基本上很完美了.    当然有些boost库部分,用起来极其无语.
      

  6.   

     如果要用+= 利益于操作符重载 用c#根本不用操作符重载,sdk也基本没用