Article View: be.comp.programming
Article #8691Re: Nog één maal uit de nood helpen.
From: Slayerke
Date: Tue, 11 Jun 2002 15:46
Date: Tue, 11 Jun 2002 15:46
108 lines
4033 bytes
4033 bytes
Christof Laeremans wrote:
> Hallo,
>
> "Hier is die C++ zaag weer" ;)
>
> Hier volgt de code van een eenvoudig programma dat gebruikt maakt van een
> lijst van objecten. (Copy Constructor zit er nog niet bij omdat het nog
> niet al te duidelijk is)
>
> Wie kan me zeggen wat er fout loopt. Want als ik volgende invoer geef
>
> Het klantnummer: 1
> De initialen: a
> Het klantnummer: 2
> De initialen: b
> Het klantnummer: 3
> De initialen: c
> Het klantnummer: 4
> De initialen: d
> Het klantnummer: 5
> De initialen: e
>
> Dan krijg ik deze uitvoer op mijn scherm
> Klanten uit de lijst halen
> 5e
> 5e
> 5e
> 5e
> 5e
>
> Hij blijkt alleen maar het laaste element te poppen
<knip>
De fout zit in je main:
> int main()
> {
> Queu Klanten;
> Persoon Klant;
> Persoon *Klnt;
>
> Klnt = &Klant; // Hier zet je Klnt=&Klant
>
> int nummer;
> char initialen[3];
> int i = 0;
>
>
> while(i < 5)
> {
> Klnt = NULL; // Hier zet je Klnt terug=NULL
> cout<<"Het klantnummer: ";
> cin>>nummer;
> cin.get();
> Klant.setNummer(nummer);
> cout<<"De initialen: ";
> cin.get(initialen,3);
> cin.get();
> Klant.setInitialen(initialen);
> //Hier heb je Klant gevuld, MAAR Klnt is nog steeds NULL
> //klant toevoegen aan de lijst
> Klanten.push(Klnt); //Je pushed Klnt op de list (dus NULL)
>
>
> i++;
> }
> //Op het einde van de lus is de variabele Klant dus = 5e
> cout<<"Klanten uit de lijst halen"<<endl;
>
>
>
> while(Klanten.nogElementen())
> {
>
> Klnt = Klanten.pop(); //je popped Klnt
> cout<<Klant.getNummer(); //maar schrijft Klant uit
//wat maar best is, anders was je proggy gecrasht
> cout<<Klant.getInitialen();
> Klnt = NULL;
>
> cout<<endl;
>
> }
>
> cout<<"bestaat de lijst ja of neen !";
> while(Klanten.nogElementen())
> {
> cout<<"ja"<<endl;
> }
>
> }
Je main is volledig foutief, je bedoeling is waarschijnlijk:
Klnt=&Klant, dan Klant vullen en dan die Klant pushen en in de volgende
iteratie terug DIEZELFDE Klant opvullen. Die methode gaat ook niet werken
(er gaat ook 5x 5e uitgeschreven worden), maar dan is het omdat je 5x een
pointer naar dezelfde Klant variabele pushed.
Eigenlijk moet je bij het vullen 5x een nieuwe Klant maken (Klnt=new
Klant...), en dan bij het poppen, niet Klant.getNummer uitschijven maar
Klnt->getNummer() enz..
En dan op het einde van die pop-iteratie niet vergeten je gepopte pointer te
deleten :-)
Die variabele Klant heb jet nergens voor nodig.
--
Groeten,
Slayerke
Technical Details
Message-ID:
<ZWoN8.27371$ud.3564@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!supernews.com!news-xfer2.newshosting.com!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!t-online.de!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<B92BDED1.684E%christof_laeremans@hotmail.com>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d75aeeec4e01f9d8 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-06-11 08:46:06 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!supernews.com!news-xfer2.newshosting.com!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!t-online.de!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: Slayerke <slayerkenospammer@slayerke.co.uk> Subject: Re: Nog één maal uit de nood helpen. Newsgroups: be.comp.programming Reply-To: slayerkenospammer@slayerke.co.uk References: <B92BDED1.684E%christof_laeremans@hotmail.com> Lines: 108 User-Agent: KNode/0.7.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8Bit Message-ID: <ZWoN8.27371$ud.3564@afrodite.telenet-ops.be> Date: Tue, 11 Jun 2002 15:46:01 GMT NNTP-Posting-Host: 213.224.101.34 X-Complaints-To: abuse@telenet.be X-Trace: afrodite.telenet-ops.be 1023810361 213.224.101.34 (Tue, 11 Jun 2002 17:46:01 MET DST) NNTP-Posting-Date: Tue, 11 Jun 2002 17:46:01 MET DST Organization: Telenet Internet