मैं एक आधार वर्गशुद्ध वर्चुअल फ़ंक्शंस के बिना सी ++ अमूर्त वर्ग?
class ShapeF
{
public:
ShapeF();
virtual ~ShapeF();
inline void SetPosition(const Vector2& inPosition) { mPosition.Set(inPosition); }
protected:
Vector2 mPosition;
}
जाहिर है कुछ ommitied कोड के साथ
है, लेकिन आप बात समझ। मैं एक टेम्पलेट के रूप में उपयोग करते हैं, और कुछ मज़ा (ommited) enums के साथ, एक तरह से मैं आकार किस तरह का उपयोग कर रहा हूँ
class RotatedRectangleF : public ShapeF
{
public:
RotatedRectangleF();
virtual ~RotatedRectangleF();
protected:
float mWidth;
float mHeight;
float mRotation;
}
ShapeF स्थिति के साथ अपने काम करता है, और एक enum कि क्या परिभाषित करता है निर्धारित करने के लिए प्रकार है। इसमें एक्सेसर्स और म्यूटेटर हैं, लेकिन कोई तरीका नहीं है।
क्या मैं आकार को एक सार वर्ग बना सकता हूं, यह सुनिश्चित करने के लिए कि कोई भी आकार की वस्तु का प्रयास नहीं करता है और आकार को तुरंत चालू करता है?
आम तौर पर, इस ShapeF
//ShapeF.h
virtual void Collides(const ShapeF& inShape) = 0;
हालांकि, मैं वर्तमान में एक अलग वर्ग में टकराव के साथ काम कर रहा हूँ के भीतर एक शुद्ध आभासी समारोह होने से संभव है। मैं सबकुछ ऊपर ले जा सकता हूं, लेकिन मुझे आश्चर्य है कि क्लास सार बनाने का कोई तरीका है .. शुद्ध वर्चुअल फ़ंक्शंस के बिना।
आप टैगिंग (enum) और कास्टिंग के साथ गतिशील प्रेषण reimplement करने की कोशिश कर रहे हैं ... कि भविष्य में जल्द ही एक दर्द हो जाएगा का उपयोग करें। मैं डिजाइन पर पुनर्विचार करता हूं। –
@ डेविडरोड्रिगुएज़-ड्राईबीस मैंने पाया कि यह सबसे आसान तरीका था, सबकुछ स्थिर है। अगर मैं फिर से डिज़ाइन करना चाहता था, तो मैं आकार के सभी को पूरी तरह से हटा दूंगा, और प्रत्येक आकार का अपना स्वयं का व्यक्ति होगा। जब तक आप एक अलग सुझाव नहीं था? – MintyAnt