Ist es möglich, eine Klasse in C++ abstrakt zu machen, ohne abstrakte Methoden zu deklarieren? Derzeit habe ich eine Sprite-Klasse mit einer StaticSprite- und einer DynamicSprite-Unterklasse. Ich würde die Klasse Sprite gerne abstrakt machen.
Das Problem ist, dass es keine gemeinsamen Methoden gibt. Nun, StaticSprite und DynamicSprite könnten sich eine draw()-Methode teilen, aber die Parameter dieser Methode sind unterschiedlich, so dass dies keine Option ist.
Ich danke Ihnen!
EDIT: Hier ist der Code, um zu zeigen, was ich zu tun versuche:
Sprite:
class Sprite
{
public:
Sprite(HINSTANCE hAppInst, int imageID, int maskID);
~Sprite();
protected:
HINSTANCE hAppInst;
HBITMAP hImage;
HBITMAP hMask;
BITMAP imageBM;
BITMAP maskBM;
HDC hSpriteDC;
};
Statik-Sprit:
class StaticSprite : public Sprite
{
public:
StaticSprite(HINSTANCE hAppInst, int imageID, int maskID);
~StaticSprite();
void draw(Position* pos, HDC hBackbufferDC);
};
Dynamischer Spruch:
class DynamicSprite : public Sprite
{
public:
DynamicSprite(HINSTANCE hAppInst, int imageID, int maskID);
~DynamicSprite();
void draw(HDC hBackbufferDC);
};
Wie Sie sehen, ist es nutzlos, ein Sprite-Objekt zu erstellen, also möchte ich diese Klasse abstrakt machen. Aber ich kann draw() nicht abstrakt machen, da es verschiedene Parameter verwendet.