Article View: be.comp.programming
Article #3289Re: polymorfisme...
From: Tim Van Wassenhove
Date: Mon, 19 Jan 2004 14:31
Date: Mon, 19 Jan 2004 14:31
69 lines
2743 bytes
2743 bytes
On 2004-01-19, Elie De Brauwer <helios@phenix.rootshell.be> wrote:
Quote volgorde hersteld
> Pieter <pieterdm@hotmail.com> wrote:
>> Hallo,
>>
>> Situatieschets:
>>
>> basisklasse : Personeelslid
>> class Personeelslid {
>>
>> private:
>> string naam;
>>
>> public :
>> Personeeslid(string);
>> void GeefNaam(string);
>> virtual double BepaalLoon();
>>
>> //********
>> afgeleide klassen: Manager , Verkoper
>> //een Manager wordt per uur betaald,
>> //een Verkoper krijgt een vast bedrag + een commissie
>> class Manager : public Personeelslid {
>>
>> private:
>> int uren;
>>
>> public:
>> Manager(string);
>> void RegistreerAantalUren(int); // <-----
>> virtual double BepaalLoon();
>>
>> Bon,
>>
>> Alle aangemaakte managers en verkopers worden toegevoegd aan een
>> map<int,PersoneelsLid> ipMap; in een algemene, andere klasse.
>>
>> Als ik deze map overloop, Hoe kan ik dan (als de iterator een manager object
>> aanduidt) RegistreerAantalUren(int); aanroepen??
>>
>> RTTI lukt niet direct, maar het moet via polymorfisme ook lukken.
>> Alleen weet ik niet exact hoe.
>>
>> mogelijke oplossing (?):
>> RegistreerAantalUren(int); ook virtual maken in Personeelslid, en enkel een
>> implementatie bij Manager?
>> Geprobeerd, maar de constructor van Personeelslid wordt dan aangeroepen..
> Stel, in elke klasse voeg je een enum TYPE die aangeeft om welk type
> persoon het juist gaat. Verder voeg je een lidfunctie toe die je
> geeftype doopt, deze geeft het type terug. In elke constructor zet
> je het type goed.
> Wanneer je iets uit die map wilt halen kijk je eerst naar het type,
> daarrond plaats je een switch case opdracht en aan de hand daarvan
> bepaal je
> naar welk object je moet casten.
> (Wel uit het vuistje maar het zou moeten weken)
Wel een heel erg "vuile" oplossing.
Als de OP gewoon dat object downcast kan hij wel de betreffende methode
oproepen.
--
http://home.mysth.be/~timvw
Technical Details
Message-ID:
<bugpod$hhnpd$5@ID-188825.news.uni-berlin.de>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!kn-upc-1.kuleuven.NET!not-for-mailReferences:
<OIYFb.92947$Cm5.4182070@phobos.telenet-ops.be> <bug2g9$1d8jq$1@sinclair.be.wanadoo.com>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,56f250c87ae79c50 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2004-01-19 06:31:44 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!kn-upc-1.kuleuven.NET!not-for-mail From: Tim Van Wassenhove <euki@pi.be> Newsgroups: be.comp.programming Subject: Re: polymorfisme... Date: 19 Jan 2004 14:31:42 GMT Lines: 69 Message-ID: <bugpod$hhnpd$5@ID-188825.news.uni-berlin.de> References: <OIYFb.92947$Cm5.4182070@phobos.telenet-ops.be> <bug2g9$1d8jq$1@sinclair.be.wanadoo.com> NNTP-Posting-Host: kn-upc-1.kuleuven.net (134.58.253.193) X-Trace: news.uni-berlin.de 1074522702 18407213 134.58.253.193 ([188825]) User-Agent: slrn/0.9.8.0 (Linux)