2012-12-19 5 views
8

Ich habe eine Basisklasse und zwei abgeleitete Klasse, und ich muss einen Zeiger auf ein Objekt der abgeleiteten Klasse zu einer der anderen Klasse, wie im Beispiel kopieren.C++ Kopie von zwei abgeleiteten Klassen

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) 
} 

ich versuche, von Abgeleitet 1 ti Basis zu passieren (erlaubt Upcasting), und dann die Kopie Konstruktor * dynamic_cast * Base Derived2 und nennen, aber es wird nicht funktionieren. Ich muss nur zwischen den beiden abgeleiteten Objekten den Basisteil beider Objekte kopieren.

+0

Falls Sie innerhalb von Derived2 auf vollständige Informationen von Derived1 und umgekehrt zugreifen müssen, koppeln Sie die Klassen stark ein. Vielleicht wäre es einfacher, Zeiger jeder Klasse nicht in einer anderen Klasse zu speichern, sondern die Accessor-Funktionen in Derived1 und Derived2 und eine andere OperateOnDerived-Klasse zu implementieren, die Verweise auf Derived1 und Derived2 speichert und berechnet, was immer Sie von ihnen benötigen. – tmaric

Antwort

5

Wenn Sie nur den Basisklassenabschnitt kopieren möchten, erstellen Sie einen Konstruktor, der eine Basisklasse empfängt.