用成员函数指针作为Callback
来源:互联网 发布:java erp教程 编辑:程序博客网 时间:2024/05/17 06:06
在带类的C中呆久了,还以为callback是静态或者全局函数的专利。有时为了让一个类的成员函数可以作为callback,不得不写一个静态函数,然后在这个函数的实现里面傻傻地调用一下那个成员函数。例如AnimateImage,这是一个从Widget继承下来的UI类,用来提供一种功能,定时地显示不同的图片,它的实现像下面这样.
class AnimateImage:publicWidget
{
public:
virtual void UpdateImage( void );
};
由于要求定时地更新图片,应该将UpdateImage加到一个定时器之中。在以前,我会这样来做这样事:首先申明一个static的help function-- StaticUpdateImage,在这个函数中调用UpdateImage,然后将StaticUpdateImage加到定时器中.
class AnimateImage:publicWidget
{
public:
virtual void UpdateImage( void );
private:
staticvoid StaticUpdateImage(AnimateImage*pThis){pThis-> UpdateImage();}
};
我讨厌这样,因为这样增加了程序的间接性。
前几天重新温习了一下C++基础知识,才明白可以用成员函数作为callback。为了可以这样,定时器要以接受函数对象作为其参数。然后你就可以将无参的成员函数弄成一个callback。这需要一个help 类来作这件事。help类的实现很简单,如下:
有了这个类,我只需要定义一个CallBack对象,并将其传给定时器即可:
CallBack<AnimateImage> callback(aAnimageImage,&AnimateImage::UpdateImage);
Add2Timer(callback);
这样一来。就少了好多诸多“static 垃圾”
也许有人会问了,你这是没有参数的情况,如果要将带参数的成员函数作为callback该怎么办呢。对于这个问题估计你得求助于boost库中的bind来完成了,这个东西可以将任意多个参数的函数变为无参数的。
- 用成员函数指针作为Callback
- 让类的成员函数作为windows callback函数
- 以类的成员函数作为Windows callback函数
- 用指针类型作为成员函数的参数
- 类成员函数当作普通函数指针 用于callback
- 成员函数指针作为形参调用
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 函数指针作为结构体的成员
- 类成员函数作为CallBack函数时3种访问类成员变量的方法
- 函数指针数组-callback
- c++ 成员函数作为函数指针参数传入
- c++ 成员函数作为函数指针参数传入
- 6-2-b 指针类型作为成员函数的参数
- 用指针作为函数参数
- 成员函数指针作为参数传递给其他函数和普通函数指针的传递
- hibernate字段映射的位置(放在属性前,还是放在方法前??)
- 2010年-2011年最新网赚教程
- 一次逻辑从库应用日志缓慢的问题的定位及解决
- linux下环境变量设置的三种方法
- Linux配置管理-VSFTP
- 用成员函数指针作为Callback
- POJ 1496 + 1850 (数论-排列组合) (?)
- 整数计算向上取整
- 字符转换函数
- [收集]JAR转EXE的几种工具和方法
- 笑傲江湖
- 系统程序员成长计划 学习笔记(2) -- Write Less
- 相关网站收录
- javaScript 验证表单