我有一個基類沒有純虛函數的C++抽象類?
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
一些ommitied代碼
很明顯,但你明白了吧。 我用這個作爲模板,並用一些有趣的(中省略)枚舉的方式來確定我使用的是什麼樣的形狀
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我認爲這是最簡單的方法,static_casting的一切。如果我想重新設計,我將完全移除ShapeF(),並且將它全部變成多態,並且讓每個形狀都是它自己的人。除非你有不同的建議? – MintyAnt