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
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,编译器要求在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
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |