gpt4 book ai didi

c++ - 为什么我不能用这个其他类的函数来填充这个类的函数指针

转载 作者:行者123 更新时间:2023-11-30 00:57:06 26 4
gpt4 key购买 nike

现在一个类的函数指针指向另一个类的函数怎么样?这是我的问题

例子:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com