场景:
BaseClass* pointer = &subClassXObject; // subClassXObject is object of class subClassX
// which is derived from BaseClass and
// Instance<subClassX>. (Instance<subClassX> is
// for counting instances of type subClassX.)
// Instance<subClassX> is derived from
// BaseInstance.
&... 代表获取地址,C++ 标准术语可能将对象定义为已经是地址,在这种情况下 &... 是对象本身
此时 subClassXObject 的类是未知的,它可以是 BaseClass 的任何定义的子类。
已知它是 BaseClass 的直接派生子类之一,每个子类也继承自 Instance
Instance
因此每个子类对象都可以访问 getDescriptor。
SubClassX* pointer = &subClassXObject;
pointer->getDescriptor(); // This should work
(或者不是吗?现在我很困惑:我是否必须在子类中显式实现基类公共(public)方法,以便有人能够从外部调用子类?不......,没有'我?)。
我喜欢
BaseClass* pointer = &subClassXObject;
pointer->getDescriptor();
工作。
将 getDescriptor 从 BaseInstance 和 Instance
将指针转换为 BaseInstance* 会使应用程序崩溃。因此,我的问题如标题中所述。
谢谢你的关心!
最佳答案
只需在基类中用virtual关键字定义函数,正确的派生类就会自动被拾取。
class Base{
public:
virtual int getDescriptor();
};
关于c++ - 以某种方式将基类的指针强制转换为未知的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17158541/