C++ 委托 fastdelegate
来源:互联网 发布:阿里技术大牛 知乎 编辑:程序博客网 时间:2024/06/08 17:16
其本质就是用来执行方法(函数)的一个东西。
#include <stdio.h>
#include "fastdelegate.h"
typedef fastdelegate::FastDelegate2<int, int, int> AddFunc;
typedef fastdelegate::FastDelegate1<string> DoSomeThingFunc;
class Demo
{
public:
int Add(int a, int b)
{
return a + b;
}
int DoSomeThing (string &str)
{
//do some thing
}
};
class HandleDemo
{
public:
template <class X, class Y, class Param1, class Param2, class RetType>
void bind_add(Y* x, RetType (X::*func)(Param1 p1, Param2 p2))
{
pAddFunc = fastdelegate::MakeDelegate(x, func);
}
template <class X, class Y, class Param1, class RetType>
void bind_do(Y* x, RetType (X::*func)(Param1 p1))
{
pDoSomeThingFunc = fastdelegate::MakeDelegate(x, func);
}
public:
void Init(Demo *pDemo)
{
bind_add(pDemo, &Demo::Add);
bind_do(pdemo, &Demo::DoSomeThing );
}
void ExecuteAdd(int a, int b)
{
int Sum = pAddFunc(a, b);
printf("Sum=%d\n", Sum);
}
void ExecuteDo(String str)
{
pDoSomeThingFunc (str);
}
private:
AddFunc pAddFunc;
DoSomeThingFunc pDoSomeThingFunc ;
};
int main(int argc, char* argv[])
{
Demo demo;
HandleDemo handldemo;
handldemo.Init(&demo);
//执行函数,调用绑定函数
handldemo.ExecuteAdd(200, 100);
handldemo.ExecuteDo("hello!");
return 0;
}
相当于demo 委托handledemo来执行它的功能函数,ExecuteAdd 和ExecuteDo实际执行的是Add ,DoSomeThing
- C++ 委托 fastdelegate
- FastDelegate
- FastDelegate
- C++ 委托 fastdelegate使用,实现类函数回调绑定
- 读fastdelegate和sigslot
- fastdelegate 学习 游戏
- C#- 委托
- C#- 委托
- c#-委托
- C#---委托
- C#委托
- C#--委托
- C#中的委托
- C#中的委托
- 天天学C#--委托
- C#中的委托
- C#中的委托
- C#中的委托
- C语言INT64类型和GCC中的long long的定义,及sprintf格式字符串的定义
- Android系列之音乐播放器的实现一(应用内音频文件)
- java,C#之间的ASE加密实现
- 使用picasso设置背景时的问题
- shell脚本----cp (copy)复制文件或目录
- C++ 委托 fastdelegate
- Maven工程打包时动态设置war名
- mac下nginx的搭建过程及一些文件的目录和相应的指令
- anaconda4.4.0 python3.6 安装opencv3 问题解决
- PLSQL Developer软件使用大全
- centos7 .a/.so/.la目标库区别
- servlet/filter/listener/interceptor区别与联系
- 集群高可用架构整理
- Volley的基本使用