【发布时间】:2011-07-10 16:21:47
【问题描述】:
是否可以在不声明任何抽象方法的情况下在 C++ 中创建类抽象?目前,我有一个带有 StaticSprite 和 DynamicSprite 子类的 Sprite 类。我想让 Sprite 类抽象化。
问题是他们没有共享任何方法。好吧,StaticSprite 和 DynamicSprite 可能共享一个 draw() 方法,但是这个方法的参数不同,所以这不是一个选项。
谢谢!
编辑: 这是演示我正在尝试做的代码:
精灵:
class Sprite
{
public:
Sprite(HINSTANCE hAppInst, int imageID, int maskID);
~Sprite();
protected:
HINSTANCE hAppInst;
HBITMAP hImage;
HBITMAP hMask;
BITMAP imageBM;
BITMAP maskBM;
HDC hSpriteDC;
};
静态精灵:
class StaticSprite : public Sprite
{
public:
StaticSprite(HINSTANCE hAppInst, int imageID, int maskID);
~StaticSprite();
void draw(Position* pos, HDC hBackbufferDC);
};
动态精灵:
class DynamicSprite : public Sprite
{
public:
DynamicSprite(HINSTANCE hAppInst, int imageID, int maskID);
~DynamicSprite();
void draw(HDC hBackbufferDC);
};
如您所见,创建一个 Sprite 对象是没有用的,所以我想将该类抽象化。但我不能使 draw() 抽象,因为它使用不同的参数。
【问题讨论】:
-
为什么要抽象没有抽象方法?
-
他们可能不希望它被实例化
-
拥有一个没有方法可继承的基类有什么意义?
-
因为那个类只有一些字段和一个构造函数/析构函数,但是类的行为应该由子类来实现。我知道这在 Java 中是可能的,所以我想知道 c++ 是否也支持这个。
-
我已经添加了我的代码来演示我正在尝试做的事情。
标签: c++