我尝试创建一个继承自多个类的类,如下所示,得到了一个“菱形”(D继承自B和C。B和C都虚拟继承自A):
A / \ B C \ / D
现在,我有一个容器,其中包含一个链表,存储指向基类(A)的指针。 当我尝试对一个指针进行显式转换(在typeid检查后),我得到了以下错误: "无法将指向基类“A”的指针转换为指向派生类“D”的指针——基类是虚拟的" 但是,当我使用动态转换时,似乎一切正常。有人可以解释一下为什么我必须使用动态转换以及为什么虚拟继承会导致这个错误吗?
A / \ B C \ / D
现在,我有一个容器,其中包含一个链表,存储指向基类(A)的指针。 当我尝试对一个指针进行显式转换(在typeid检查后),我得到了以下错误: "无法将指向基类“A”的指针转换为指向派生类“D”的指针——基类是虚拟的" 但是,当我使用动态转换时,似乎一切正常。有人可以解释一下为什么我必须使用动态转换以及为什么虚拟继承会导致这个错误吗?