[C++] 简单高效的 delegate 方法

使用 Objective-C 或者 Java 的都对其中的 delegate 方法印象很深,而在我们经常使用的 C++ 中虽然也有所谓的 Callback,但是似乎还挺麻烦的。有没有一个更好的实现方法呢?有的,国外的《Member Function Pointers and the Fastest Possible C++ Delegates》这篇文章就给了我们一个简单方便的实现库。

原理在作者的文章中已经讲得很详细了,我们这里简单讲一下使用方法:

0、代码功能:
以上代码实现了这样一个简单的功能流程:
1)外部调用A::Func2函数;
2)A::Func2函数调用B::Func1函数;
3)B::Func1函数回调A::Func1函数。

1、代理类声明:
1)代理类型:

FastDelegate前两个参数对应A::Func1中的前两个参数,最后一个参数赌赢的A::Func1的返回值类型。
2)代理赋值:
通过 this 指针,A将自身传给B,同时通过&A::Func1指定了将类A中的哪个方法作为代理方法传给B。

2、代理调用:
在类B中delegate变量就已经相当于是A::Func1函数,可以和A::Func1函数一样调用:

通过这样简单的几行代码就完成了一个基本的C++类间回调。我相信大家都很容易理解了。

参考文档:
FastDelegate库介绍和下载地址:
http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible

Add a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注