मुझे शैली के बारे में एक सवाल है। मेरे पास एक वर्ग है (मेरे मामले में एक विकल्प) जो एक एक्सोजेनिक ऑब्जेक्ट (ब्याज दर) के मूल्य पर निर्भर करता है। मेरा लक्ष्य exogenous ऑब्जेक्ट (दर) के लिए एक सार आधार वर्ग बनाना है ताकि मैं विविधताएं बना सकूं, सिम्युलेरेट या कॉन्स्टेंट्रेट कहें, जो मेरे निर्भर वर्ग, विकल्प के अंदर काम करेगा।सी ++: एक सदस्य के रूप में एक अमूर्त वर्ग
हालांकि, मुझे सी ++ में मिल रहा है, क्योंकि मैं स्पष्ट रूप से एक सार आधार वर्ग को चालू नहीं कर सकता, मुझे या तो एक सूचक या बेस क्लास के संदर्भ को स्टोर करना होगा। मेरी चिंता यह है कि जब तत्काल एक्सोजेनस ऑब्जेक्ट्स निर्भर वर्ग के बाहर गुंजाइश से बाहर निकलते हैं, तो मेरा आश्रित वर्ग जंक पर इंगित करेगा।
क्या सी ++ में इस समस्या के लिए बहुरूपता का उपयोग करने का कोई उचित तरीका है?
मेरे वर्तमान कोड:
class Dependent
{
public:
Dependent(const Exogenous& exo) : exo_(exo) {}
double getSomething() const { exo_.interfaceMethod(); }
private:
Exogenous& exo_;
}
class Exogenous
{
public:
virtual double interfaceMethod() const=0;
}
class ExogenousVariationA
{
public:
virtual double interfaceMethod() const { return resultA; }
}
class ExogenousVariationB
{
public:
virtual double interfaceMethod() const { return resultB; }
}
क्या 'आश्रित' अनिवार्य रूप से 'एक्सोजेनस' का संदर्भ रखेगा, या इससे प्राप्त हो सकता है? अर्थात। क्या आपको दोनों वर्गों को अलग से चालू करना है? – didierc
सबसे पहले, पॉलीमोर्फिक ऑब्जेक्ट हमेशा पॉइंटर/संदर्भ द्वारा आयोजित किए जाते हैं। जावा जैसी अन्य भाषाओं में भी यह मामला है। दूसरा, चूंकि यह सी ++ है, आपको हमेशा उचित सी ++/आरएआईआई ऑब्जेक्ट आजीवन प्रबंधन का उपयोग करना चाहिए, जो पॉइंटर्स के लिए स्मार्ट पॉइंटर्स का मतलब है। – bames53