Article View: be.comp.programming
Article #8698Re: Nog één maal uit de nood helpen.
From: Christof Laeremans
Date: Tue, 11 Jun 2002 18:11
Date: Tue, 11 Jun 2002 18:11
170 lines
5422 bytes
5422 bytes
On 6/11/02 5:46 PM, in article ZWoN8.27371$ud.3564@afrodite.telenet-ops.be,
"Slayerke" <slayerkenospammer@slayerke.co.uk> wrote:
> 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.
Mensen,
Bedankt om me uit de nood te helpen, de oefening werkt !
Heb mijn main aangepast naar
int main()
{
Queu Klanten;
//Persoon Klant;
Persoon *Klnt;
int nummer;
char initialen[3];
int i = 0;
while(i < 5)
{
Klnt = new Persoon; //x maal een nieuwe persoon maken
cout<<"Het klantnummer: ";
cin>>nummer;
cin.get();
Klnt -> setNummer(nummer); //pointer naar een klasse, om dan de
lidfuncties op te roepen -> gebruiken
cout<<"De initialen: ";
cin.get(initialen,3);
cin.get();
Klnt -> setInitialen(initialen); //idem
//klant toevoegen aan de lijst
Klanten.push(Klnt);
i++;
}
cout<<"Klanten uit de lijst halen"<<endl;
while(Klanten.nogElementen())
{
Klnt = Klanten.pop();
cout<<Klnt -> getNummer();
cout<<Klnt -> getInitialen();
cout<<endl;
}
//verwijderen van de pointer die wijst naar de klasse
delete Klnt;
}
Nogmaals bedankt voor de hulp
Mvg,
Christof Laeremans
Technical Details
Message-ID:
<B92C0A0A.68AF%christof_laeremans@hotmail.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!news.maxwell.syr.edu!newsfeed.online.be!feed1.news.be.easynet.net!news.be.wanadoo.com!news.wanadoo.be!not-for-mailReferences:
<B92BDED1.684E%christof_laeremans@hotmail.com> <ZWoN8.27371$ud.3564@afrodite.telenet-ops.be>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 11:12:11 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!news.maxwell.syr.edu!newsfeed.online.be!feed1.news.be.easynet.net!news.be.wanadoo.com!news.wanadoo.be!not-for-mail From: Christof Laeremans <christof_laeremans@hotmail.com> Newsgroups: be.comp.programming Subject: Re: Nog één maal uit de nood helpen. Date: Tue, 11 Jun 2002 20:11:54 +0200 Organization: Wanadoo Belgium Lines: 171 Message-ID: <B92C0A0A.68AF%christof_laeremans@hotmail.com> References: <B92BDED1.684E%christof_laeremans@hotmail.com> <ZWoN8.27371$ud.3564@afrodite.telenet-ops.be> NNTP-Posting-Host: adsl-80-236-139-88.wanadoo.be Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Trace: sinclair.be.wanadoo.com 1023819134 1420188 80.236.139.88 (11 Jun 2002 18:12:14 GMT) X-Complaints-To: abuse@wanadoo.be NNTP-Posting-Date: Tue, 11 Jun 2002 18:12:14 +0000 (UTC) User-Agent: Microsoft-Entourage/10.0.0.1309