🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #3289

Re: polymorfisme...

#3289
From: Tim Van Wassenhove
Date: Mon, 19 Jan 2004 14:31
69 lines
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-mail
References: <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)