我在MSVC ++ 2008中的问题,在VS2008引发此编译错误:
error C2509: 'render' : member function not declared in 'PlayerSpriteKasua'
现在,有什么困惑我的是,渲染()的定义,但在继承的类。
类定义是这样的:
SpriteBase -Inherited By-> PlayerSpriteBase -Inherited By-> PlayerSpriteKasua
因此,SpriteBase.h的削减的版本如下:
class SpriteBase {
public:
//Variables=============================================
-snip-
//Primary Functions=====================================
virtual void think()=0; //Called every frame to allow the sprite to process events and react to the player.
virtual void render(long long ScreenX, long long ScreenY)=0; //Called every frame to render the sprite.
//Various overridable and not service/event functions===
virtual void died(); //Called when the sprite is killed either externally or via SpriteBase::kill().
-snip-
//======================================================
};
PlayerSpriteBase.h是这样的:
class PlayerSpriteBase : public SpriteBase
{
public:
virtual void pose() = 0;
virtual void knockback(bool Direction) = 0;
virtual int getHealth() = 0;
};
最后,PlayerSpriteKasua.h是这样的:
class PlayerSpriteKasua : public PlayerSpriteBase
{
public:
};
我知道在它有会员加入,但是那只是因为我自己没有给它们添加。 这同样适用于PlayerSpriteBase; 有向左走在它其他的东西。
在PlayerSpriteKasua.cpp的代码是这样的:
#include "../../../MegaJul.h" //Include all the files needed in one go
void PlayerSpriteKasua::render(long long ScreenX, long long ScreenY) {
return;
}
void PlayerSpriteKasua::think() {
return;
}
int PlayerSpriteKasua::getHealth() {
return this->Health;
}
当我输入,也就是说, void PlayerSpriteKasua::
,智能感知弹出列表PlayerSpriteBase和SpriteBase蛮好的所有成员,但在编译像我上面所说的失败。
有没有我得到这个错误什么特别的原因?
PlayerSpriteBase.cpp是空的,在它没有什么作为呢。
SpriteBase.cpp设有大量的SpriteBase函数定义,并使用相同的格式PlayerSpriteKasua.cpp:
void SpriteBase::died() {
return;
}
是一个例子。