Example
class
Base {
public
:
void
fnc(){}
};
class
Derived:
public
Base
{
public
:
void
fnc(){}
};
void
f
unction(
Derived
*dp
){
Base
*ptr
= (
Base
*
)
dp
;
ptr
->fnc();
}
Solution
Do not cast a pointer of one class to the a pointer of a class inherited from.
class
Base {
public
:
virtual void
fnc(){}
};
class
Derived:
public
Base
{
public
:
virtual
void
fnc(){}
};
void
function
(
Derived
*dp
){
dp
->fnc();
}