示例

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


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


void call
DerivedFunction(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();

}