C++ 委托 fastdelegate

4 篇文章 1 订阅
fastdelegate 是c++实现的快速委托机制,

其本质就是用来执行方法(函数)的一个东西。

#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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值