W klasie mam pole typu list. Deklaruję je w taki sposób:
list <Pociagi*>pociagi;
Później w programie dodaję elementy za pomocą metody push.back(); Zaraz po dodaniu danego elementu do listy wywołuję metodę, której zadaniem jest wylistować wszystkie dodane elementy. Gdy dodaję jeden pociąg - wszystko jest dobrze. Gdy dodaję kolejny - nagle obydwa elementy są takie same (tak jakby pierwszy się zmieniał). Ktoś wie dlaczego?
I pytanie nr 2. - jeżeli wywołuję metodę listującą wszystkie elementy zaraz po dodaniu nowego, wszystko ładnie się drukuje. Jednak gdy zachce mi się wywołać tę metodę w innym miejscu - wywala mi błąd "Access violation reading location 0xcccccccc". Pytanie takie samo - czemu?
Dodam tylko, że już mnie jasny szlag z tym trafia, bo w tym samym projekcie mam drugą, bliźniaczo podobną klasę, z tą różnicą, że tam elementami listy nie są wskaźniki, a obiekty i, o dziwo, w tamtej klasie wszystko listuje się poprawnie w każdym miejscu programu.
Metoda listująca wygląda tak:
void Pociag_Manager::listuj_pociagi(){
if(pociagi.size() == 0){
cout<<"brak pociagow"<<endl;
}
else{
for(it = this->pociagi.begin(); it != this->pociagi.end(); it++){
(*it)->drukuj_pociag();
}
}
}