gpt4 book ai didi

c++ - 未实现的纯虚方法问题

转载 作者:行者123 更新时间:2023-11-28 07:09:44 26 4
gpt4 key购买 nike

我有以下接口(interface) A:

class A
{
virtual void f() = 0;
}

我还有从 A 派生的接口(interface) B、C:

class B : public A
{
...
}

class C : public A
{
...
}

类 X 实现 B,Y 实现 C。它们都派生自类 D

class X : public D, public B {...}
class Y : public D, public C {...}

这两个类都具有相同的 A::f() 实现,因此我将此实现移至 D。现在,当我尝试实例化 X 或 Y 时,我收到一个错误,指出未为它们实现 f()。

看起来虽然在基类中实现了同样的方法,但是编译器并没有将其识别为纯虚函数的实现。我应该怎么办?

最佳答案

D::f() 的实现对A::f() 一无所知。您必须从 A 派生 D(以及从 D 派生 BC ) 或在 XY 中实现 f()。实现可能非常简单 - 只是调用 D 中的函数(但不要调用它 D::f() 以避免歧义)。

编辑:(添加信息)

不过,如果您可以在类之间自由移动此函数,我什至不确定它是否必须是方法,而不是辅助函数。

关于c++ - 未实现的纯虚方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21203988/

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