C++ - "Member-Funktion nicht deklariert" in der abgeleiteten Klasse

Ich habe ein problem in MSVC++ 2008, wo VS2008 wirft diese compile-Fehler:

error C2509: 'render' : member function not declared in 'PlayerSpriteKasua'

Nun, was verwirrt mich ist, dass die render() definiert ist, aber in einer geerbten Klasse.

Der definition der Klasse, funktioniert wie folgt:

SpriteBase -Inherited By-> PlayerSpriteBase -Inherited By-> PlayerSpriteKasua

So, eine abgespeckte version von SpriteBase.h ist die folgende:

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;
};

Und schließlich PlayerSpriteKasua.h:

class PlayerSpriteKasua : public PlayerSpriteBase
{
public:
};

Ich weiß, es gibt keine Mitglieder die in es noch, aber das ist einfach weil ich noch nicht bekommen hatte, um Sie zu addieren. Gleiches gilt für PlayerSpriteBase; es gibt andere Sachen, Links zu gehen, um es.

Den code in PlayerSpriteKasua.cpp ist diese:

#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;
}

Geben, wenn ich, sagen wir, void PlayerSpriteKasua:: Intellisense erscheint mit einer Liste aller Mitglieder der PlayerSpriteBase und SpriteBase nur gut, aber am kompilieren scheitert es, wie ich oben sagte.

Gibt es einen bestimmten Grund, warum ich diese Fehlermeldung bekommen?

PlayerSpriteBase.cpp ist leer und hat nichts in es noch.

SpriteBase.cpp hat viele Funktion Definitionen für SpriteBase, und verwendet das gleiche format wie PlayerSpriteKasua.cpp:

void SpriteBase::died() {
  return;
}

ist ein Beispiel.

InformationsquelleAutor Sukasa | 2009-10-23

Schreibe einen Kommentar