gpt4 book ai didi

没有纯虚函数的 C++ 抽象类?

转载 作者:IT老高 更新时间:2023-10-28 22:22:49 26 4
gpt4 key购买 nike

我有一个基类

class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();

inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }

protected:
Vector2 mPosition;
}

显然有一些省略的代码,但你明白了。我将其用作模板,并使用一些有趣的(省略的)枚举来确定我正在使用哪种形状

class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}

ShapeF 通过定位和定义类型的枚举来完成其工作。它有访问器和修改器,但没有方法。

我可以让 ShapeF 成为一个抽象类,以确保没有人尝试实例化 ShapeF 类型的对象吗?

通常,这可以通过在 ShapeF 中使用纯虚函数来实现

//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;

但是,我目前正在一个单独的类(class)中处理碰撞。我可以把所有东西都移过来,但我想知道是否有办法让一个类抽象......没有纯虚函数。

最佳答案

你可以声明,并实现,一个纯虚析构函数:

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

ShapeF::~ShapeF() {}

这是您已有的一小步,并且会阻止 ShapeF 被直接实例化。派生类不需要更改。

关于没有纯虚函数的 C++ 抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631685/

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