【发布时间】:2012-12-12 05:56:21
【问题描述】:
我想使用实现从接口实现纯虚拟方法 由具体类提供,而不必显式调用具体类中的方法。示例:
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() 的包装器?
【问题讨论】:
-
代码看起来不错:liveworkspace.org/code/2W44n2$3
-
一旦我添加了
;你缺少的东西,这在 g++ 4.5 上编译得很好。你能告诉我们导致问题的真实代码吗? -
我不想这样做。我想告诉编译器该实现是从 ConcreteA 提供的,而不使用包装器/存根。有办法吗?
-
ideone.com/aN0Eam - 你的编译器有问题。
-
粘贴您收到的错误消息
标签: c++ interface multiple-inheritance pure-virtual