gpt4 book ai didi

C++ 接口(interface)和继承

转载 作者:IT老高 更新时间:2023-10-28 22:34:09 35 4
gpt4 key购买 nike

我想要一个接口(interface) IA 和另一个扩展它的 IB。

A 实现 IA,B 继承 A 并实现 IB。

但是,当编译 B 时出现错误,说 IA 的东西是未定义的,即使 A 定义了它:(

class IA
{
public:
virtual ~IA(){}
virtual void foo()=0;
};
class IB : public IA
{
public:
virtual void bar()=0;
};


class A : public IA
{
public:
A();
void foo();
};
class B : public A, public IB
{
public:
B();
void bar();
};

error C2259: 'B' : cannot instantiate abstract class
due to following members:
'void IA::foo(void)' : is abstract

最佳答案

查看 C++ 常见问题解答,从以下几点开始:https://isocpp.org/wiki/faq/multiple-inheritance#mi-diamond

它详细解释了“可怕的钻石”和虚拟继承。

关于C++ 接口(interface)和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5581806/

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