🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #9393

Re: [C++] vraagje ivm overerving en polymorfisme

#9393
From: Bart.Vanhauwaert
Date: Sun, 28 Apr 2002 16:02
34 lines
2383 bytes
Frederik Himpe <frederik.himpe.NO@spam.gmx.net> wrote:
> Stel dat ik een klasse A heb, en een klasse B en C die publiek zijn 
> afgeleid van A. Ik maak dan bvb. een vector<A>, en stop hierin allemaal 
> objecten van klassen B en C willekeurig door elkaar. Bestaat er dan na het 

Dat kan niet. In een vector<A> kan je alleen A's steken, geen B's of C's
zelfs niet als die publiek afgeleid zijn. Wat wel kan is een copy van
het A-stuk uit een B of een C in een vector<A> steken.

> opvullen van die vector nog een mogelijkheid om te zien of een object van 
> die vector nu van klasse B of van klasse C is? Of zal ik ergens in klasse A 
> een datalid moeten zetten dat bijhoudt of het object van B of van C is?

Zoals gezegd zitten er in een vector<A> alleen maar A's. Als je een
polymorfe vector wil moet je een vector<A*> maken. Daar kan je wel
pointers naar A's, B's of C's steken.

En dan kan je natuurlijk wel terug te weten komen wat het oorspronkelijke
was. Zoek naar RTTI (run time type information) in een boek. Het meest
voorkomende is dat je een A* hebt en dat je (indien het werkelijk om een
B gaat) naar een B* wil.

Dan doe je

B* b = dynamic_cast<B*>( myVector[0] );

indien op de eerste plaats van je vector een pointer naar B zat heeft is 
b een pointer naar een B*. Indien er op die eerste plaats eigenlijk een
pointer naar een C of een A zat, heeft b de waarde 0.

cu bart

-- 
http://www.irule.be/bvh/
Technical Details
Message-ID: <re6haa.g64.ln@ns1.irule.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!supernews.com!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fr.clara.net!heighliner.fr.clara.net!skynet.be!skynet.be!louie!not-for-mail
References: <wzSy8.43931$Ze.7164@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,e1efe537c181c282
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-04-28 15:25:53 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!supernews.com!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fr.clara.net!heighliner.fr.clara.net!skynet.be!skynet.be!louie!not-for-mail
Sender: - <bvh@ns1.irule.be>
From: Bart.Vanhauwaert@nowhere.be
Subject: Re: [C++] vraagje ivm overerving en polymorfisme
Newsgroups: be.comp.programming
References: <wzSy8.43931$Ze.7164@afrodite.telenet-ops.be>
User-Agent: tin/1.4.4-20000803 ("Vet for the Insane") (UNIX) (Linux/2.2.17-21mdksecure (i686))
Date: Sun, 28 Apr 2002 18:02:35 +0200
Message-ID: <re6haa.g64.ln@ns1.irule.be>
Lines: 34
NNTP-Posting-Host: 194.78.202.248
X-Trace: 1020032722 reader0.news.skynet.be 8150 194.78.202.248
X-Complaints-To: abuse@skynet.be