在 C++ 中是否可以使用另一个基类在派生类中提供接口(即抽象基类)的实现?
class Base
{
virtual void myfunction() {/*...*/};
}
class Interface
{
virtual void myfunction() = 0;
}
class Derived
: public Base, public Interface
{
// myfunction is implemented by base
}
上面应该编译,但实际上并不工作。有什么办法可以达到这个效果吗?
万一有人关心,想要这样做的原因是(对于我的应用程序)使用来自另一个项目/命名空间的通用库来在我的项目中提供接口的实现是有意义的。我可以包装所有东西,但这似乎是很多额外的开销。
谢谢。
原文由 deuberger 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果
Base
不是从Interface
派生的,那么您必须在Derived
中进行转发呼叫。在您必须编写额外代码的意义上,这只是“开销”。我怀疑优化器会让它像你最初的想法一样有效。