"函数指针"如何传递"类的成员函数"?
由于程序设计的需要,我想要把类B的成员函数传给类A。可是不知道应该如何写,我写了下面的demo程序,但是编译无法通过。
如何用函数指针传递某个类的成员函数呢?
请大家指点,谢谢!
demo程序如下,编译无法通过:
//---------------------------------------------------------------------------
#include <stdio.h>
class A{
public:
A(void (*f)(void));//f为传进来的函数
virtual~A();
aa();//调用函数_ff()
private:
void (*_ff)(void);
};
//
A::A(void (*f)(void)){ _ff = f; }
//
A::aa(){ _ff(); }
//--------------------------------------
class B{
public:
B();
void set();
bb();//把set()赋值给函数指针,传给A类
virtual~B();
void (*f)(void);//函数指针
int _x;
};
//
B::B(){ bb();}
//
B::bb()
{
void (*f)(void);
f = set();//编译时此处错误:error C2440: '=' : cannot convert from 'void' to 'void (__cdecl *)(void)'
A *a = new A(f);
}
//
void B::set(){
this->_x = -1;
printf("\n this is B::set");
}
void main()
{
B *b=new B();
}
//------------------------------------------------------------------------------------------