gpt4 book ai didi

c++ - 没有抽象方法的抽象类

转载 作者:可可西里 更新时间:2023-11-01 16:25:31 25 4
gpt4 key购买 nike

是否可以在不声明任何抽象方法的情况下在 C++ 中使类抽象?目前,我有一个带有 StaticSprite 和 DynamicSprite 子类的 Sprite 类。我想使 Sprite 类抽象。

问题是他们没有任何共享的方法。好吧,StaticSprite 和 DynamicSprite 可能共享一个 draw() 方法,但是这个方法的参数不同所以这不是一个选项。

谢谢!

编辑:这是演示我正在尝试做的事情的代码:

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

静态 Sprite :

class StaticSprite : public Sprite
{
public:
StaticSprite(HINSTANCE hAppInst, int imageID, int maskID);
~StaticSprite();

void draw(Position* pos, HDC hBackbufferDC);
};

动态 Sprite :

class DynamicSprite : public Sprite
{
public:
DynamicSprite(HINSTANCE hAppInst, int imageID, int maskID);
~DynamicSprite();

void draw(HDC hBackbufferDC);
};

如您所见,创建 Sprite 对象是没有用的,因此我想将该类抽象化。但我不能使 draw() 抽象,因为它使用不同的参数。

最佳答案

您可以将析构函数声明为纯虚函数,因为所有类都有一个。

class AbstractClass
{
public:
virtual ~AbstractClass() = 0 ;
} ;

但是,您需要在别处定义此析构函数。

AbstractClass::~AbstractClass() {}

关于c++ - 没有抽象方法的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com