2012-12-19 37 views
8

की प्रतिलिपि है मेरे पास एक बेस क्लास और दो व्युत्पन्न कक्षा है, और मुझे व्युत्पन्न कक्षा के किसी ऑब्जेक्ट में एक पॉइंटर को दूसरी कक्षा में से एक में कॉपी करने की आवश्यकता है, उदाहरण के लिए।सी ++ दो व्युत्पन्न वर्ग

class Base 
{ 
public: 
    Base(const Base& other); 
} 

class Derived1 :public Base 
{ 
public: 
    Derived1(const Derived& other): Base(other){...}; 
} 

class Derived2: public Base 
{ 
public: 
    Derived2(const Derived& other): Base(other){...}; 
} 

main() 
{ 
    Derived 1 d1; 
    Derived2 d2(d1) 
} 

मैं (अनुमति upcasting) व्युत्पन्न 1 ti आधार से पारित करने के लिए प्रयास करते हैं, और उसके बाद * Derived2 को dynamic_cast * बेस और प्रतिलिपि निर्माता कॉल करने के लिए है, लेकिन यह काम नहीं करेगा। मुझे केवल दो व्युत्पन्न वस्तु दोनों वस्तुओं के मूल भाग के बीच प्रतिलिपि बनाने की आवश्यकता है।

+0

यदि आपको Derived2 के भीतर Derived1 की पूरी जानकारी तक पहुंचने की आवश्यकता है और इसके विपरीत, आप कक्षाओं को दृढ़ता से जोड़ रहे हैं। हो सकता है कि प्रत्येक कक्षा के पॉइंटर्स को किसी अन्य वर्ग में स्टोर न करना आसान हो, लेकिन डेरिवेट 1 और डेरिवेट 2 में एक्सेसर फ़ंक्शंस को कार्यान्वित करने के लिए और एक अन्य क्लास ऑपरेटेटऑनडिव किया गया है जो व्युत्पन्न 1 और व्युत्पन्न 2 दोनों के संदर्भों को संग्रहीत करता है और जो भी आपको उनकी आवश्यकता होती है उसकी गणना करता है। – tmaric

उत्तर

5

यदि आपका इरादा बेस क्लास भाग की प्रतिलिपि बनाना है, तो एक रचनाकार बनाएं जो बेस क्लास प्राप्त करे।

Derived2(const Base& other): Base(other){...}; 

Derived1(const Base& other): Base(other){...}; 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^