範例
class
Base {
public
:
void
fnc();
};
class
Derived:
public
Base
{
public
:
void
fnc(){}
};
void
call
Derived
Function(
Base
*ptr
){
Derived
*dp = (
Derived
*) ptr;
dp->fnc();
}
解決方案
請將一個類別的指標強制轉型成它並未繼承的類別指標。 若要避免錯誤,請勿將指標用於向下強制轉型。 請改用虛擬函數。
class
Base {
public
:
virtual void
fnc();
};
class
Derived:
public
Base
{
public
:
virtual
void
fnc(){}
};
void
callDerivedFunction
(
Base
*ptr
){
ptr
->fnc();
}