C ++ abstrakte Klasse ohne reine virtuelle Funktionen?
Ich habe eine Basisklasse
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
Offensichtlich mit etwas ausgelassenem Code, aber Sie bekommen den Punkt. Ich benutze dies als Vorlage und mit ein paar lustigen Aufzählungen, um zu bestimmen, welche Art von Form ich benutze
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
ShapeF erledigt seine Aufgabe mit der Positionierung und einer Aufzählung, die den Typ definiert. Es hat Accessoren und Mutatoren, aber keine Methoden.
Kann ich ShapeF zu einer abstrakten Klasse machen, um sicherzustellen, dass niemand versucht, ein Objekt vom Typ ShapeF zu instanziieren?
Normalerweise ist dies durch eine rein virtuelle Funktion in ShapeF möglich
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
Zur Zeit beschäftige ich mich jedoch mit Kollisionen in einer separaten Klasse. Ich kann alles verschieben, aber ich frage mich, ob es einen Weg gibt, eine Klasse abstrakt zu machen ... ohne die rein virtuellen Funktionen.