static_cast bei virtueller Vererbung
-
Folgender Code:
class A { }; class B :virtual public A { }; int main(int argc, char* argv[]) { A* pA; B* pB; static_cast<B*>(pA); return 0; }
static_cast geht nicht. Wenn ich das virtual bei der Vererbung weglasse, gehts. Das scheint standardmäßig ok zu sein, zumindest hat der Comeau-Compiler das gleiche Problem. Aber was hat das für nen Grund?
-
Kann es sein das du garnicht verstehst, was virtuelle Vererbung bedeutet?
-
hm, dachte eigentlich schon:
Verhindert dass bei mehrfachvererbung Basisklassen, die in verschiedene Vererbungspfade mehrfach auftauchen, auch wirklich mehrfach instanziiert werden.
Aber daraus ersehe ich keinen Grund dafür, dass der cast nicht gehen sollte.
Aber klärt mich auf bitte.
-
Hallo,
hilft dir das?Oder das?
Oder mehr aus einer anderen Sichtweise: das?
Das ist auch noch sehr interessant.
-
Danke Hume