Article View: de.comp.lang.c++
Article #951casting-Probleme mit virtueller Vererbung
From: Haiko Emmel
Date: Mon, 04 Dec 1995 20:31
Date: Mon, 04 Dec 1995 20:31
55 lines
1422 bytes
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!newsmasterShow 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