2012-12-19 21 views
8

Ho una classe base e due classi derivate e ho bisogno di copiare un puntatore su un oggetto della classe derivata su una delle altre classi, come nell'esempio.Copia C++ di due classi derivate

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

cerco di passare da Derivato 1 Ti-Base (upcasting consentito), e poi a * dynamic_cast * Base per Derived2 e chiamare il costruttore di copia, ma non funziona. Ho solo bisogno di copiare tra i due oggetti derivati ​​la parte Base di entrambi gli oggetti.

+0

Nel caso in cui sia necessario accedere a tutte le informazioni di Derived1 in Derived2 e viceversa, si stanno accoppiando le classi con forza. Forse sarebbe più semplice non archiviare i puntatori di ogni classe in un'altra classe, ma implementare le funzioni di accesso in Derived1 e Derived2 e un'altra classe OperateOnDerived che memorizza i riferimenti a Derived1 e Derived2 e calcola ciò che è necessario da loro. – tmaric

risposta

5

Se l'intento è di copiare semplicemente la parte della classe Base, creare un costruttore che riceva una classe base.

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

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