gpt4 book ai didi

c++ - 继承问题 "ambiguous request"

转载 作者:行者123 更新时间:2023-11-28 06:43:36 29 4
gpt4 key购买 nike

我对继承有疑问。假设我有 4 节课:基类A,B类继承A,C类继承A,BC 类继承 B 和 C

class A
{
public:
void test()
{

}
};

class B :public A
{
};

class C :public A
{
};

class BC :public B,public C
{

};

int main()
{
BC a;
a.test();
}

结果:

In function ‘int main()’:
error: request for member ‘test’ is ambiguous
note: candidates are: void A::test()
note: void A::test()

我该如何解决这个问题?这可能吗?我想要的是 BC 中所有三个类的单个实例。

您好,泰锤

最佳答案

参见 section 25 on C++ FAQ ,关注question 25.8 .

如果您希望类 BC 只从类 A 派生一次,您应该声明类 B 和 C 具有从 A 的虚拟继承:

class A {};
class B : public virtual A {};
class C : public virtual A {};
class BC : public B, public C {};

关于c++ - 继承问题 "ambiguous request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25456641/

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