gpt4 book ai didi

c++ - 将派生类指针转换为基类时基类不明确

转载 作者:行者123 更新时间:2023-11-30 01:09:19 26 4
gpt4 key购买 nike

我正在使用 C++。当我尝试将派生类的指针转换为基类时,编译器提示“基类不明确”。

我做了一些研究,发现了这个问题 How can I avoid the Diamond of Death when using multiple inheritance? .以及其他一些类似的问题。

有一个解决方案,就是使用虚拟继承。但我无法更改类定义,因为它们是编译库。

是否可以在不更改基类定义的情况下进行转换?

一个最小的样本是:

class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};

我想做的是:

D *d = new D;
A *a = (D *)d; // ambiguous

最佳答案

Is that possible to do the converting, without changing base class definitions?

是的。您必须选择要通过哪个直接基类。

class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};

void foo(A&) {}

int main() {
D d;

foo(static_cast<B&>(d));
foo(static_cast<C&>(d));

return 0;
}

关于c++ - 将派生类指针转换为基类时基类不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40501037/

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