Klasa abstrakcyjna C ++ bez czystych funkcji wirtualnych?
Mam klasę bazową
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
Oczywiście z jakimś ommitied kodem, ale rozumiesz. Używam tego jako szablonu, z pewnymi zabawnymi (ommited) enums, sposobem na określenie, jakiego rodzaju kształtu używam
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
ShapeF wykonuje swoje zadanie z pozycjonowaniem i wyliczeniem, które definiuje typ. Ma akcesoria i mutatory, ale nie ma metod.
Czy mogę uczynić ShapeF klasą abstrakcyjną, aby nikt nie próbował i nie tworzył obiektu typu ShapeF?
Zwykle jest to możliwe dzięki czystej funkcji wirtualnej w ShapeF
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
Jednak obecnie mam do czynienia z kolizjami w osobnej klasie. Mogę wszystko przenieść, ale zastanawiam się, czy istnieje sposób na stworzenie abstrakcji klasowej ... bez czystych funkcji wirtualnych.