πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #947

Re: casting-Probleme mit virtueller Vererbung

#947
From: Harald Fuchs
Date: Tue, 05 Dec 1995 11:33
19 lines
1597 bytes
100321.1321@compuserve.com (Haiko Emmel) writes:

> 	tPtr=new Top();
> 	bPtr=(Base*) tPtr;		// funktioniert!
> 	mPtr=(Medium*) bPtr;		// can not cast Base * to Medium *
> 	MPtr=(Meddle*) bPtr;		// can not cast Base * to Meddle *
> 	delete(tPtr);

> }

> Mich wundert es, dass der Compiler da nicht casten kann. Wenn man von
> der Basisklasse base nicht virtuelle erbt, klappt es mit dem casting!
> Ist das nun ein Borland-Problem, oder geht das in C++ prinzipiell
> nicht, oder gibt es einen Trick, wie man das trotzdem hinbekommt?

Das ist explizit verboten, weil es die Implementierung erleichtert
(keine Backpointer von base auf derived nΓΆtig).  Im allgemeinen ist
eine derartige Notwendigkeit ohnehin ein Hinweis auf einen
Designfehler.
Technical Details
Message-ID: <puspizagok.fsf@themroc.colibri.de>
Path: arc1-ca.pugleaf.net!rz.uni-karlsruhe.de!not-for-mail
References: <49vm09$anh@dub-news-svc-6.compuserve.com>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!rz.uni-karlsruhe.de!not-for-mail
From: hf@colibri.de (Harald Fuchs)
Newsgroups: de.comp.lang.c++
Subject: Re: casting-Probleme mit virtueller Vererbung
Date: 05 Dec 1995 12:33:31 +0100
Organization: Colibri GmbH, Germany
Sender: hf@themroc.colibri.de
Message-ID: <puspizagok.fsf@themroc.colibri.de>
References: <49vm09$anh@dub-news-svc-6.compuserve.com>
NNTP-Posting-Host: teco10a.teco.uni-karlsruhe.de
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
In-reply-to: 100321.1321@compuserve.com's message of Mon, 04 Dec 1995 20:31:42 GMT
X-WWW-Home-Page: http://www.colibri.de/~hf/
X-PGP-Public-Key: finger hf@colibri.de
X-PGP-Fingerprint: 09 4E C4 A2 B2 C5 33 1A  79 80 5D 39 BD 9B 89 39
X-Disclaimer: Kore wa Colibri no iken dewa arimasen
X-Newsreader: Gnus v5.0.9