私はいくつかのommitiedコードで明らかに純粋な仮想関数のないC++抽象クラス?
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
基底クラスを持っているが、あなたはポイントを得ます。 私はテンプレートとしてこれを使用すると、いくつかの楽しみ(ommited)列挙、私は
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;
内純粋仮想関数を持つことでなんとかです。 私はすべてを上に移動することができますが、純粋な仮想関数なしでクラス抽象化する方法があるのだろうかと思います。
...将来的には、すぐに痛みになります使用してみてください。私はデザインを再考するだろう。 –
@DavidRodríguez-dribeas私はこれが最も簡単なアプローチであると考えていました。私が再設計したければ、ShapeF()をすべて削除し、すべての多形性を持たせ、それぞれの形を自分の人にします。別の提案がない限り? – MintyAnt