Problem z dynamic_cast i iteratorem
Ostatnio zmodyfikowano 2015-01-14 14:10
Sarth Temat założony przez niniejszego użytkownika |
» 2015-01-14 14:10:59 Dziękuję za odpowiedzi. Program działa poprawnie. Edit: Niestety, ale mam kolejny problem. void person::print( std::list < client *> & lista ) { std::list < client *>::iterator iter; for( iter = lista.begin(); iter != lista.end(); ++iter ) { if( person * per = dynamic_cast < person *>( * iter ) ) { std::cout << "Numer karty stalego klienta: " <<( * iter )->loyaltyCard; std::cout << "Imie: " << per->firstName << " "; std::cout << "Nazwisko: " << per->lastName << " "; std::cout << "Pesel: " << per->pesel << " "; std::cout << std::endl; } } }
O ile nie mam np. problemu z dodawaniem obiektów różnych klas pochodnych do listy. To nie wiem jak ją wypisać. Jak mam wywołać powyższą funkcję? person p; p.print( clientList ); Po tej nieudolnej próbie wywołania metody program przestaje działać. Teoretycznie mógłbym zadeklarować tę metodę jako globalną i w klasach pozmieniać zmienne na publiczne, ale to raczej nie jest zgodne z paradygmatem programowania obiektowego. Wolałym wszystko "trzymać" w klasach. Edit2: Już rozwiązałem wszystkie problemy związane z tym programem. Zamykam temat. |
|
1 « 2 » |