से भर उन आभासी लागू किया तरीकों के साथ अगर मैं एक आधार वर्ग, केवल आभासी तरीकों और आधार वर्ग से 2 व्युत्पन्न वर्ग के साथ की है।सूचक,, व्युत्पन्न वर्ग
मैं कैसे करूँ:
// causes C2259
BaseClass* base = new BaseClass[2];
BaseClass[0] = new FirstDerivedClass;
BaseClass[1] = new SecondDerivedClass;
या:
// causes "base is being used without being initialized"
BaseClass* base;
// causes CC59 again
BaseClass* base = new BaseClass;
base[0] = FirstDerivedClass();
base[1] = SecondDerivedClass();
(या कुछ इसी तरह)
... ताकि मैं DerivedClass
के माध्यम से BaseClass
रों तरीकों का उपयोग कर सकते, लेकिन सूचक और सूचक द्वारा DerivedClass
एस की एक सरणी है?
समस्या, जिसे "ऑब्जेक्ट स्लाइसिंग" कहा जाता है, सरणी के लिए विशिष्ट नहीं है - यह तब भी होता है जब आप किसी व्युत्पन्न क्लास को बेस क्लास * मान * द्वारा असाइन करते हैं। जैसे 'बेस क्लास बी; बी = फर्स्टडेरिव क्लास(); 'संकलित सी ++ है जो फिर भी चुपचाप तोड़ता है (सबसे अच्छा आपको एक कंपाइलर चेतावनी मिल सकती है)। –
लिंक को स्थानांतरित किया जाना प्रतीत होता है। – user6003859
@ user6003859 मैंने इसे अपडेट किया, स्पॉटिंग के लिए धन्यवाद! – Jon