我想使用实现从接口(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/