🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

casting-Probleme mit virtueller Vererbung

#951
From: Haiko Emmel
Date: Mon, 04 Dec 1995 20:31
55 lines
1422 bytes
Hallo,

ich bin heute auf folgendes casting-Problem gestossen:


// Uebersetzt mit Borland C++ 3.1

class Base
{
public:
	char base() const { return('b'); }
};

class Meddle : virtual public Base
{
public:
	char meddle() const { return('m'); }
};

class Medium : virtual public Base
{
public:
	char medium() const { return('M'); }
};

class Top : public Meddle, public Medium
{
public:
	char top() const { return('t'); }
};


main()
{
	Base* bPtr;
	Medium* mPtr;
	Meddle* MPtr;
	Top* tPtr;

	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?

Wer weiss Rat?

Haiko Emmel
Technical Details
Message-ID: <49vm09$anh@dub-news-svc-6.compuserve.com>
Path: arc1-ca.pugleaf.net!news.compuserve.com!newsmaster

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.compuserve.com!newsmaster
From: 100321.1321@compuserve.com (Haiko Emmel)
Newsgroups: de.comp.lang.c++
Subject: casting-Probleme mit virtueller Vererbung
Date: Mon, 04 Dec 1995 20:31:42 GMT
Organization: CompuServe Incorporated
Message-ID: <49vm09$anh@dub-news-svc-6.compuserve.com>
NNTP-Posting-Host: ad05-005.compuserve.com
X-Newsreader: Forte Free Agent 1.0.82