2012-12-19 23 views
8

Mam klasy bazowej i dwie klasy pochodnej, i muszę skopiować wskaźnik do obiektu klasy pochodnej do jednej z innych klas, podobnie jak w przykładzie.C++ kopia dwóch pochodnych klasy

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

staram się przejść od 1 pochodnego bazie Ti (upcasting dozwolone), a następnie do bazy * * dynamic_cast do Derived2 i wywołać konstruktor kopiujący, ale to nie będzie działać. Potrzebuję tylko skopiować między dwoma obiektami pochodnymi podstawową część obu obiektów.

+0

Jeśli potrzebujesz uzyskać dostęp do pełnej informacji o Derived1 w Derived2 i na odwrót, mocno łączysz klasy. Być może łatwiej byłoby po prostu nie przechowywać wskaźników z każdej klasy w innej klasie, ale zaimplementować funkcje dostępowe w Derived1 i Derived2 oraz w innej klasie OperateOnDerived, która przechowuje odwołania do Derived1 i Derived2 i oblicza to, czego od nich potrzebujesz. – tmaric

Odpowiedz

5

Jeśli Twoim zamiarem jest po prostu skopiować część klasy Base, zrób konstruktor, który odbiera klasę podstawową.

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

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