基本クラスがあります
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;
ただし、現在、別のクラスで衝突を処理しています。すべてを移動することはできますが、純粋仮想関数を使用せずにクラスを抽象化する方法があるかどうか疑問に思っています。