c++ - 使用从具体类继承来实现纯虚方法C++

标签 c++ interface multiple-inheritance pure-virtual

我想使用实现从接口(interface)实现纯虚方法 由具体类提供,而不必显式调用具体类中的方法。示例:

class InterfaceA{  
public:  
    virtual void foo() = 0;  
};

class InterfaceB:public InterfaceA{  
public:  
   virtual void bar() = 0;  
};

class ConcreteA : public InterfaceA{  
public:  
   virtual void foo(){}//implements foo() from interface  
};

class ConcreteAB: public InterfaceB, public ConcreteA{  
public:  
    virtual void bar(){}//implements bar() from interface  
};

在这种情况下,编译器要求在类 ConcreteAB 中实现 foo(),因为 InterfaceB 没有实现它并且它继承自 InterfaceA。

有没有一种方法可以告诉编译器使用 ConcreteA 的实现而不使用调用 ConcreteA::foo() 的包装器?

最佳答案

使 InterfaceA 成为虚拟基类。

class InterfaceB : public virtual InterfaceA {  
public:  
   virtual void bar() = 0;  
};

class ConcreteA : public virtual InterfaceA {  
public:  
   virtual void foo(){}//implements foo() from interface  
};

关于c++ - 使用从具体类继承来实现纯虚方法C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044583/

相关文章:

c# - IEnumerable,需要两个实现?

c++ - 来自多个类的虚拟事件处理程序 : multiple inheritance or composition?

c++ - 对于相同的 c++ 源文件,其 gcc 可执行文件在 Windows 中比在 Linux 中大 655 倍。为什么差别这么大?

c++ - Windows 服务状态 C++?

Java接口(interface)实现问题

Delphi:如何将Click事件分配给对象的方法?

c++ 在运行时检查对象是否实现了接口(interface)

python - factory_boy 工厂的多重继承——似乎只继承了第一个父级

C++ next_permutation 没有以相反的顺序列出

c++ - 继续收到 "no member function declared"错误,即使它已声明和定义