现在一个类的函数指针指向另一个类的函数怎么样?这是我的问题
例子:
class Apple
{
int(Apple::*pActionFunc)(void);
};
class Tree
{
Apple* tempy;
void Init( void );
int I_Work( void );
};
void Tree::Init( void )
{
tempy = new Apple( );
tempy->pActionFunc = &Tree::I_Work;
}
int Tree::I_Work( void )
{
"Do Things"
}
那是行不通的。这是为什么?
最佳答案
这行不通,因为像所有变量一样,函数指针也有类型,您只能使用指向相同类型的指针来存储变量类型的地址。
int(Apple::*pActionFunc)(void);
告诉编译器pActionFunc
是一个指向Apple
类的成员函数的指针,它以void
作为参数并返回一个整数
。
tempy->pActionFunc = &Tree::I_Work;
尝试存储函数 I_Work()
的地址,该函数是 Tree
类的成员,该类以 void
作为输入参数并返回一个 int
。
如果您注意到它们是不同类的成员函数,因此会出现错误。
关于c++ - 为什么我不能用这个其他类的函数来填充这个类的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035135/