C++ 接口(interface)和继承

标签 c++ inheritance interface

我想要一个接口(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/

相关文章:

android - 错误 : undefined reference to 'cv::String::deallocate()'

java - 限制可以在 Java 中实现接口(interface)的类

Java:与接口(interface)、抽象类或内部类的可重用封装?

java - 回调监听器总是返回 null

c++ - LibPng 背景

c++ - 如何获取捕获的着色器参数的值

C++ Boost.Asio 对象生命周期

c++ - g++ 在基类中找不到重载函数

c# - 创建 Type<SuperClass> 的通用列表并用派生类填充它的解决方法?

android - 从适配器调用 fragment 方法