🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #3287

Re: polymorfisme...

#3287
From: Elie De Brauwer
Date: Mon, 19 Jan 2004 07:54
68 lines
2811 bytes
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)

mvg
Elie De Brauwer


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..
> 
> Hints, tips??
> 
> Mvg,
> Pieter
> 
> 
> 
> 
Technical Details
Message-ID: <bug2g9$1d8jq$1@sinclair.be.wanadoo.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!t-online.de!newsfeed.freenet.de!newsfeed.tiscali.ch!feed1.news.be.easynet.net!news.be.wanadoo.com!news.wanadoo.be!not-for-mail
References: <OIYFb.92947$Cm5.4182070@phobos.telenet-ops.be>

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 05:02:28 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed00.sul.t-online.de!t-online.de!newsfeed.freenet.de!newsfeed.tiscali.ch!feed1.news.be.easynet.net!news.be.wanadoo.com!news.wanadoo.be!not-for-mail
From: Elie De Brauwer <helios@phenix.rootshell.be>
Newsgroups: be.comp.programming
Subject: Re: polymorfisme...
Date: Mon, 19 Jan 2004 07:54:49 +0000 (UTC)
Organization: Wanadoo Belgium
Lines: 68
Message-ID: <bug2g9$1d8jq$1@sinclair.be.wanadoo.com>
References: <OIYFb.92947$Cm5.4182070@phobos.telenet-ops.be>
NNTP-Posting-Host: phenix.rootshell.be
X-Trace: sinclair.be.wanadoo.com 1074498889 1483386 217.22.55.50 (19 Jan 2004 07:54:49 GMT)
X-Complaints-To: abuse@wanadoo.be
NNTP-Posting-Date: Mon, 19 Jan 2004 07:54:49 +0000 (UTC)
User-Agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (Linux/2.4.19-grsec-C7_III (i586))