001
08.07.2003, 21:32 Uhr
virtual
Sexiest Bit alive (Operator)
|
Ohne cast geht das nicht. Ein typecast, wie Du in von C aus kennst, ist übrigens dabei sehr unsicher. Dh das hier bitte nicht machen:
C++: |
B b; Object *o; A *a= new A(); o= a; b.m((A*)o);
|
Zwar ist in diesem überschaubaren Beispiel alles noch nachvollziehbar, aber sobalds unfangreicher wird, kann man den Überblick verlieren. Länger, aber dafür sicherer ist:
C++: |
B b; Object *o; A *a= new A(); o= a; b.m(dynamic_cast<A*>(o));
|
(wobei das nur tut, wenn Object virtuelle Methoden Tabelle hat). Der Vorteil vom Dynamic Cast ist, daß automatisch gechekt wird, ob das Objekt sich überhaupt casten läßt.
Tja, erwähnte ich schon, daß man in Situationen wie von Dir angestrebt meistens sein Design überdenken sollte? -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |