Beispiel

class Base {
public:
void fnc();
};


class Derived: public Base {
public:
void fnc(){}
};


void call
DerivedFunction(Base *ptr){

Derived *dp = (Derived*) ptr;
dp->fnc();

}

Lösung
Setzen Sie einen Zeiger einer Klasse nicht in den Zeiger einer Klasse um, aus der er keine Elemente übernimmt. Verwenden Sie zur Vermeidung von Fehlern keine Zeiger bei Rückumsetzungen. Setzen Sie stattdessen virtuelle Funktionen ein.

class Base {
public:
virtual void fnc();
};


class Derived: public Base {
public:
virtual void fnc(){}
};


void callDerivedFunction
(Base *ptr){

ptr->fnc();

}