Ich bin neu in C++ und arbeite an einem Pacman-Prototyp. Während ich versuchte, das Konzept des Polymorphismus zu verstehen, kam ich über dieses Problem. Jedes Mal, wenn ich versuche, einen Konstruktor oder ein Objekt für Ghost- und ScaredGhost-Klassen zu erstellen, komme ich mit der No-Mating-Funktion zum Aufruf von class :: class error.Keine Mating-Funktion zum Aufrufen der Klasse ::
Heres meiner Header-Datei:
class Enemies : public Window
{
public:
Enemies(const Window &window,int w,int h,int x,int y);
virtual ~Enemies();
virtual void EnemyDraw() = 0;
protected:
int gh,gw; //Height width
int gx,gy; // x and y
};
//--------------------------------------------------------
class Ghost : public Enemies
{
public:
Ghost();
void EnemyDraw();
};
//--------------------------------------------------------
class ScaredGhosts : public Enemies
{
public:
void EnemyDraw();
};
und die Umsetzung:
Enemies::Enemies(const Window &window,int w,int h,int x,int y):
Window(window), gw(w), gh(h), gx(x),gy(y)
{
//ctor
}
Enemies::~Enemies(){}
//_________________________________________________________________________________________________________
void Ghost::EnemyDraw()
{
SDL_Rect rect;
rect.w = gw;
rect.h = gh;
rect.x = gx;
rect.y = gy;
SDL_SetRenderDrawColor(renderer,0,0,255,0);
SDL_RenderFillRect(renderer,&rect);
}
Ghost::Ghost()
{
}
//_________________________________________________________________________________________________________
void ScaredGhosts::EnemyDraw()
{
SDL_Rect rect;
rect.w = gw;
rect.h = gh;
rect.x = gx;
rect.y = gy;
SDL_SetRenderDrawColor(renderer,0,255,255,0);
SDL_RenderFillRect(renderer,&rect);
}
Dies ist nur die Basis dieser Klasse, aber ich kann ohne Überwindung dieses Problems nicht fortgesetzt werden.
Es abd im allgemeinen Klassennamen nicht plural.s schwer zu sehen sein soll, wie "Feinde" kann ein "Fenster" sein. Außerdem würde ich vorschlagen, Ihr Spiel ohne Vererbung zu schreiben - die Vererbung wird von Anfängern stark überbeansprucht. –