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

Assigning function pointer within a class gives value type error in C++

我在 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不是一个普通函数,它是一个class成员函数。