Kopiowanie obiektu
Ostatnio zmodyfikowano 2016-09-11 20:16
skovv Temat założony przez niniejszego użytkownika |
Kopiowanie obiektu » 2016-09-11 14:16:52 Witam :) Mam 1 klasę bazową: class Baza { public: int x; };
i 2 które z niej korzystają: class A : public Baza { }; class B : public Baza { };
Obiekty A i B mają robić za obiekty w grze, aby było łatwiej wszystko zautomatyzować mam listę obiektów(vector<Baza*>) i w razie potrzeby odwołania się bezpośrednio do obiektu A lub B używam dynamic_cast i wszystko gra. Zastanawiam się jednak czy jest możliwe sklonowanie obiektu z listy bez podawania klasy głównej(A lub B) Baza * a = new A(); Baza b = * a; A * c = dynamic_cast < A *>( b );
Coś w ten deseń..? |
|
pekfos |
» 2016-09-11 14:24:51 Dodaj do klasy bazowej metodę wirtualną do klonowania obiektu. Każda klasa pochodna niech sama sobie zaimplementuje kopiowanie wszystkiego, co dodała od siebie. |
|
skovv Temat założony przez niniejszego użytkownika |
» 2016-09-11 16:08:32 Actor * i1 = new A(); Actor nw( * i1 ); Actor nw2( * i1 ); A nxx( * dynamic_cast < A *>( & nw ) ); A nxx2( * dynamic_cast < A *>( & nw2 ) );
Chodziło Ci o to, prawda? Tak, to by rozwiązywało problem. Niestety szukam rozwiązania które nie wymaga podawania klasy pochodnej: chciałbym podać string(nazwę klasy) i na jego podstawie kopiowałby sie odpowiedni obiekt. vector < Actor *> lista; lista.push_back( new A() ); lista.push_nack( new B() );
void nowy( string name ) { Actor nowy( * i1 ); A nxx( * dynamic_cast < A *>( & nowy ) ); }
|
|
pekfos |
» 2016-09-11 17:36:26 Dodaj do klasy bazowej metodę wirtualną |
Wydawało mi się, że nie da się tego nie zrozumieć.. |
|
skovv Temat założony przez niniejszego użytkownika |
» 2016-09-11 20:16:38 Haha dobra, już ogarnalem, wszystko działa. Tak to jest jak sie kodzi po godzinach :D Dzięki wielkie! |
|
« 1 » |