У меня проблема в MSVC ++ 2008, где VS2008 выдает эту ошибку компиляции:
error C2509: 'render' : member function not declared in 'PlayerSpriteKasua'
Теперь меня смущает то, что render () определен, но в унаследованном классе.
Определение класса работает так:
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::
, Intellisense выскакивает со списком всех членов PlayerSpriteBase и SpriteBase просто отлично, но при компиляции происходит сбой, как я сказал выше.
Есть ли какая-то особая причина, по которой я получаю эту ошибку?
PlayerSpriteBase.cpp пуст и в нем пока ничего нет.
SpriteBase.cpp содержит множество определений функций для SpriteBase и использует тот же формат, что и PlayerSpriteKasua.cpp:
void SpriteBase::died() {
return;
}
является примером.