gpt4 book ai didi

c++ - 从基类的间接多重继承向上转型

转载 作者:行者123 更新时间:2023-11-28 02:01:32 25 4
gpt4 key购买 nike

我有这个代码:

struct A {};
struct B : A {};
struct C : A {};
struct D : B, C {};

int main(){
D* d;
A* a = d;
}

代码无法编译,出现编译错误:

'A' is an ambiguous base of 'D'

我知道使继承虚拟化将解决歧义。我的问题是,为什么向上转换不适用于 A 的子对象之一?

最佳答案

因为您有两个类型为 A 的不同基础子对象,所以您需要说出您想要哪一个:

A* a_b = static_cast<B*>(d);
A* a_c = static_cast<C*>(d);

关于c++ - 从基类的间接多重继承向上转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39356105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com