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.
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