如何设计通用的回调机制
来源:互联网 发布:舞台灯光效果设计软件 编辑:程序博客网 时间:2024/05/18 00:27
template < class T, void (T::*F)() > class callback {/**/};
这个模板的实现并不复杂,有一个对 T 的引用,它是一个类,其成员函数要被调用,一个构造函数和一个叫做execute()的成员函数,由它调用回调成员函数:
template < class T, void (T::*F)() >
class callback
{
public:
callback(T& t) : object(t) {} // assign actual object to T
void execute() {(object.*F)();}// launch callback function
private:
T& object;
};
记住:为了通过成员指针调用成员函数,必须要引用或实际对象的指针。这就是为什么该模板有一个T&作为数据成员,现在假设我们要使用这个回调模板来执行类A 的一个回调函数:
class A
{
public:
void f();
};
这里是实例化该模板的方法:模板参数必须是常量表达式。因此,你不能用变量作为此成员函数的地址。而要用&操作符接受该函数的地址。最后,用模板对象作为参数传递你要调用其成员函数的对象:
int main()
{
A a; // 首先创建一个对象
callback < A, &A::f > c(a); // 实例化模板
c.execute(); // 调用回调成员函数
}
你可以将此回调类模板用于任何类类型,只要所调用的成员函数名字相同即可。
- 如何设计通用的回调机制
- 如何设计通用的回调机制
- 如何设计通用的网站模板
- 如何设计通用权限
- 智能家居通用管理平台(七) - 即插即用机制的设计
- 通用的权限模块是如何设计的?
- 通用的权限模块是如何设计的?
- 通用Adapter设计,SparseArray+泛型+回调的使用
- AOI中如何设计通用的图像处理方法
- 通用设计的原则
- 通用的设计模式
- UML的通用机制(一)
- UML的通用机制(二)
- UML的通用机制(三)
- UML的通用机制(四)
- AsyncToken机制替换通用的Listener机制
- 通用权限设计的探讨
- 通用工作列表的设计
- Linus谈如何写一个操作系统
- SQL注入天书—ASP注入漏洞全接触(转:小竹)
- 写在12月的第一天
- 谈新手对CString的使用
- 金球奖三大候选出炉
- 如何设计通用的回调机制
- 浅谈MYSQL跨库查询
- Oracle最新技术网站
- 榨干MS SQL最后一滴血
- 人生二十二条“军规”
- Microsoft SharePoint: Building Office 2003 Solutions
- Java之我見
- SQL语句参考及记录集对象详解
- CString Management (关于CString的所有操作)