Ben bir temel sınıf bazı ommitied kodla AçıkçasıC++ saf sanal işlevler olmadan soyut sınıf?
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
var, ama noktası olsun. Ben bir şablon olarak kullanmak ve bazı eğlenceli (ommited) çeteleler ile, bir yol ı
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
ShapeF konumlama ile işini yapar kullanarak ve ne tanımlayan bir enum ediyorum şekil türünü belirlemek için türü. Erişim sağlayıcıları ve mutators var, ancak hiçbir yöntem.
ShapeF nesnesinin bir nesnesini denemeden ve örneklememesini sağlamak için ShapeF'i soyut bir sınıf yapabilir miyim?
Normalde bu Ancak, Şu anda ayrı sınıfta çarpışmaları uğraşıyorum ShapeF
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
içinde saf sanal fonksiyon alarak yapılabilir olduğunu. Her şeyi taşıyabilirim, ama saf bir sanal işlevler olmadan bir sınıf özeti oluşturmanın bir yolu olup olmadığını merak ediyorum.
... gelecekte yakında ağrı olacak kullanmayı deneyin. Tasarımı tekrar gözden geçiririm. –
@ DavidRodríguez-dribeas Bunun en kolay yaklaşım olduğunu düşündüm, static_casting her şey. Yeniden tasarım yapmak istesem, ShapeF() yi tümüyle, tüm polimorfizmle birlikte kaldırırdım ve her şekli kendi kişiliğidir. Farklı bir öneriniz olmadıkça? – MintyAnt