如何将一个类中的成员函数付给一个回调函数!
如下:
typedef void (CALLBACK * OnCallBack)();
class aclass
{
OnCallBack funCallBack;
}class bclass
{
void CALLBACK fun();
}main()
{
aclass aobject;
bclass bobject;
bobject.funCallBack = aobject.fun;
}
这样不行,编译器认为funCallBack和fun类型不同
如下:
typedef void (CALLBACK * OnCallBack)();
class aclass
{
OnCallBack funCallBack;
}class bclass
{
void CALLBACK fun();
}main()
{
aclass aobject;
bclass bobject;
bobject.funCallBack = aobject.fun;
}
这样不行,编译器认为funCallBack和fun类型不同
class aclass
{
static OnCallBack funCallBack;
}class bclass
{
void CALLBACK fun();
}main()
{
aclass aobject;
bclass bobject;
bobject.funCallBack = aclass::fun;
}
这样试试
aclass.htypedef void (CALLBACK * OnCallBack)();
class aclass
{
OnCallBack funCallBack;
}bclass.hclass bclass
{
bclass();
void CALLBACK fun();
}bclass.cppbclass::bclass()
{
aclass aobject;
aobject.funCallBack = fun;
}
这样也不行!
这样比较好
typedef void (*OnCallBack) ();class aclass
{
public:
static OnCallBack funCallBack;
};class bclass
{
public:
OnCallBack pfunB;
};void main()
{
bclass bobject;
bobject.pfunB = aclass::funCallBack;
}
{
public
static void CALLBACK PFunB();
}
class aclass
{
static void CALLBACK funCallBack();
}class bclass
{
OnCallBack pfunB;
}main()
{
aclass aobject;
bclass bobject;
bobject.pfunB = aclass::funCallBack;
}
class aclass
{
static void CALLBACK funCallBack();
}class bclass
{
OnCallBack pfunB;
}main()
{
aclass aobject;
bclass bobject;
bobject.pfunB = aclass::funCallBack;
}
typedef void (CALLBACK * OnCallBack)();
class aclass
{
OnCallBack funCallBack;
}class bclass
{
void CALLBACK fun();
}main()
{
aclass aobject;
bclass bobject;
bobject.funCallBack = aobject.fun;
}
typedef void (aclass::*pfOnCallBack)();class aclass
{
public:
void OnCallBack(){printf("hahahahaha\n");}
};
int main()
{
aclass a;
pfOnCallBack pa; pa = aclass::OnCallBack;
(a.*pa)(); return 0;
}我还不知道怎么把指针放到另一个类里面
typedef void (__closure*pfOnCallBack)();
这种声明了__closure的回调函数是可以接受类中的非静态成员函数的指针,例如:
pfOnCallBack OnCallBack;
class aclass
{
void fun;
}OnCallBack = aobject.fun;
请问在VC中可以这样做吗?如何能实现?
能不能吧WinProc函数也封装在类里??
回调函数好象必须是静态的!我认为的原因是调用你函数的程序必须确定你函数的入口.