在C++中实现多播委托(3)

这个代码生成器真的就那么好吗?带来的问题是,每次需要新的多播委托就要重新生成一个,这样无疑是比较麻烦的,不仅如此,而且还不能调用成员函数,这是非常失望的,所以代码的构架有必要再次去修改一下。想象一下,当一个成员函数需要作为回调函数时,怎么办?也许有人说改为static的,OK,那我想使用函数成员怎么办?声明一个全局this指针,好的,那如果这个类有多个实例呢?。。。没有办法了吗,有。举个例子:
template<class T>
class Delegate
{
private:
	typedef void (T::*fnPtr)();
	T* pThis;
	fnPtr fuction;
public:
	Delegate(T* t,fnPtr f):pThis(t),fuction(f){}
	void Invoke()
	{
		(pThis->*fuction)();
	}
};
这样的话,在你创建的时候,必须指明要代理的类型才能够使用,虽然我们还不能够用它来做多播委托,->*这个符号也有点怪异,但是它能够使成员函数作为回调函数,我们看到了一线曙光,思考一下,如何使他变成多播委托呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值