gpt4 book ai didi

c++ - 在类中分配函数指针会在 C++ 中给出值类型错误

转载 作者:行者123 更新时间:2023-11-28 02:35:12 25 4
gpt4 key购买 nike

我在 Entity.h 中得到了这段代码,它被其他类继承。这个想法是在继承类中可以更改函数以避免继承或修改行为。

public:
Entity(void)
{
updateFunction = emptyFunction;
};
~Entity(void);
protected:
void emptyFunction(){}
void (*updateFunction)();

问题是我在编译时遇到这个错误:

Error   2   error C2440: '=' : cannot convert from 'void (__cdecl Entity::* )(void)' to 'void (__cdecl *)(void)'    c:\documents and settings\administrator\my documents\visual studio 2010\projects\projectname\[projectname]\Entity.h 16  1   [projectname]

我又看了一遍教程,学习这些东西已经有一段时间了,但我看不出有什么不同,可能出了什么问题? IntelliSense 取消将“=”符号作为错误点。我希望我没有忽略任何事情。

提前致谢!

最佳答案

您需要将指针函数声明为:

class Entity{
public:
Entity(void)
{
updateFunction = &Entity::emptyFunction;
// ...
(this->*updateFunction)(); //Call
};
~Entity(void);
protected:
void emptyFunction(){}
void (Entity::*updateFunction)();
};

事实上updateFunction不是一个普通的函数,它是一个类成员函数。

关于c++ - 在类中分配函数指针会在 C++ 中给出值类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27732380/

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