-EDIT -
Danke für die schnelle Antwort, ich hatte wirklich seltsame Probleme mit meinem Code und ich änderte meine Umwandlungen in dynamic_cast und es funktioniert nun perfekt
-ORIGINAL POST -
Ist es sicher, einen Zeiger einer Basisklasse auf eine andere Basisklasse zu übertragen? Um dies etwas zu erweitern: Wird der Zeiger, den ich im folgenden Code markiert habe, nicht zu undefiniertem Verhalten führen?
%Vor%Wird die Verwendung dieses Zeigers zu undefiniertem Verhalten führen?
Ja. Der C-Style-Cast versucht nur die folgenden Cams:
const_cast
static_cast
static_cast
, dann const_cast
reinterpret_cast
reinterpret_cast
, dann const_cast
Es wird reinterpret_cast
verwenden und die falsche Sache machen.
Wenn Base2
polymorph ist, d. h. virtual
-Funktionen hat, ist der korrekte Cast hier dynamic_cast
.
Wenn es keine virtuellen Funktionen hat, können Sie diese Umwandlung nicht direkt ausführen und müssen auf Derived
first reduzieren.