Можно ли сделать абстрактное представление класса в C++ без объявления абстрактных методов? В настоящее время у меня есть класс Sprite с подклассом StaticSprite и DynamicSprite. Я хотел бы сделать класс класса Sprite абстрактным.Аннотация класс без абстрактных методов
Проблема в том, что нет никаких методов, которыми они делят. Ну, как StaticSprite, так и DynamicSprite могут совместно использовать метод draw(), но параметры этого метода различны, поэтому это не вариант.
Спасибо!
EDIT: Вот код, чтобы показать, что я пытаюсь сделать:
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;
};
Staticsprite:
class StaticSprite : public Sprite
{
public:
StaticSprite(HINSTANCE hAppInst, int imageID, int maskID);
~StaticSprite();
void draw(Position* pos, HDC hBackbufferDC);
};
Dynamicsprite:
class DynamicSprite : public Sprite
{
public:
DynamicSprite(HINSTANCE hAppInst, int imageID, int maskID);
~DynamicSprite();
void draw(HDC hBackbufferDC);
};
Как вы видите, бесполезно создавать объект Sprite, поэтому я хотел бы сделать этот абстрактный класс. Но я не могу сделать draw() abstract, поскольку он использует разные параметры.
Почему он должен быть абстрактным без абстрактных методов? –
Они, вероятно, не хотят, чтобы он был создан. – Erix
Какой смысл иметь базовый класс, который не имеет методов для наследования? – Rob