最近在写一个功能的时候,涉及到回调函数的传递,最后用了传递函数指针的办法. A和B两个文件,A需要传一个函数int fun(char*,char*) 给B文件的Bclass类里面
在B.h里面这样定义:
typedef int(*Pfun)(char*,char*);
class B
{
private:
static Pfun callback;
......
public:
......
static void valuePfun(Pfun fun) {callback = fun};
......
};
在B.cpp里面:
Pfun B::callback = NULL; //初始化
在A里面,假如函数是 int funCallback(char* ,char*);
则可以这样调用:
B::valuePfun(funCallback);
顺便说另外一种函数指针
刚才定义的函数指针是指向普通函数的,如果回调函数是类里面的成员函数呢?所以就需要定义一个指向类里面成员函数的指针.
好吧,就用刚才的讲吧,假如B里面还有一个public函数 void sayWords(char*) {.....}
现在要定义一个指向B::sayWords的函数
typedef void(B::*Pfun)(char*);
Pfun callbackInClass;
callbackInClass = B::sayWords;
这样就可以了.