Witam
Chcialem utworzyć listę, której elementy są obiektami klasy Wezel.
Mam problem z dodaniem elementu, tzn. stworzyłem funkcję pushFront w nastepujacy sposób
Wezel *wsk;
wsk=new Wezel;
wsk->data=word; //word to string który chcę zamieścic w nowym elemencie
wsk->next=begin;
begin=wsk;
}
Gdzie begin jest wskaznikiem który zawiera pierwszy element (po którym chcę wstawić nowy)
Po dodaniu kilku elementów wypisuję funkcją
Wezel *iterator=begin;
do{
cout << (*iterator).data;
iterator=iterator->next;
}while(iterator!=NULL);
I teraz wszystko działa. Moje pytanie brzmi, dlaczego nie można zastąpić funkcji dodaj takim kodem?:
Wezel nowy(word);
nowy.next=begin;
begin=&nowy;
Myślałem że te zapisy znaczą to samo
Definicja klasy Wezel:
class Wezel{
friend class master; //jest to klasa z której wywołuje np dodanie nowego elementu
private:
string data;
Wezel *next;
public:
Wezel(string a) { data=a; };
};
Program kompiluje się i uruchamia, ale gdy nie wywołam funkcji wypisującej. Gdy próbuję wypisać pokazuje naruszenie pamięci.
Z góry dziękuję za pomoc.