I have a base class "Artikel" and a couple of derived classes "AudioCD" and "Boek"
Then I have a class "Winkel" that has a private member ArtikelLijst* stok. Stok is the head of a linked list that contains articles.
In main.cpp, I make a Winkel instance and add some Artikel instances to it (2). After that, I print the result, but for some reason, only the first Artikel gets printed. I've reviewed the code a couple of times, but cannot seem to find the error.
I will post the code that adds an Artikel to the list and the code that prints the Artikels, I will also post Winkel.h (do not mind the dutch comments):
Winkel.h
Print the articlesCode:#ifndef WINKEL_H #define WINKEL_H #include "Artikel.h" const int AANTAL = 10; /* * Een winkel is een array / linked list van artikels * Sommige functies zijn van toepassing op de versie met de array * Achter deze functies staat [ARRAY] * Idem met gelinkte lijst maar dan [LINKED LIST] */ // de gelinkte lijst die een winkellijst voorstelt, alternatief voor array struct ArtikelLijst { ArtikelLijst* prev; ArtikelLijst* next; Artikel* artikel; }; class Winkel { public: // zie winkel.cpp om de linked list/array code te veranderen voor de default constructor Winkel(); // LINKED LIST FUNCTIONS // Met een linked list kan je niet werken met een get functie zoals bij een array, maar dit is sowieso overbodig void addArtikel(Artikel* artikel); // Een artikel ADRES is uniek :- void deleteArtikel(Artikel* artikel); // schrijf alle artikels in de lijst uit void toonArtikelsLL(); // ARRAY FUNCTIONS // vul een artikel in de array op plaats index void vulLijst(Artikel* a, int index) { lijst[index] = a; } // geef een artikel terug uit de array Artikel* getArtikel(int index) const { return lijst[index]; } // schrijf alle van NULL verschillende artikels in de array uit void toonArtikels(); private: // gelinked lijst manier - lijsthoofd ArtikelLijst* stok; // array manier Artikel* lijst[AANTAL]; }; #endif
Add an articleCode:void Winkel::toonArtikelsLL() { ArtikelLijst* cursor = stok; while (cursor != NULL) { cursor->artikel->schrijfUit(); cursor = cursor->next; } }
Code:void Winkel::addArtikel(Artikel* artikel) { // stok is alleen NULL in het begin als de lijst leeg is, dus fix lijsthoofd if (stok == NULL) { stok = new ArtikelLijst; stok->artikel = artikel; stok->next = NULL; stok->prev = NULL; } else { // we weten dat het lijsthoofd niet null is, dus prev van het lijst hoofd bestaat [triv noob] nee ni zo triv zie if ArtikelLijst *cursor = stok; ArtikelLijst *prev = cursor->prev; // triv null // ga naar de laatste plaats while (cursor != NULL) { prev = cursor; cursor = cursor->next; } // add new article cursor = new ArtikelLijst; cursor->artikel = artikel; cursor->next = NULL; cursor->prev = prev; } }



LinkBack URL
About LinkBacks



