Dan*_*aad 2 c++ interface multiple-inheritance pure-virtual
我想使用具体类提供的实现从接口实现纯虚方法,而不必从具体类显式调用该方法。例:
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  
};