我有一个虚拟基类和两个实现各种方法的类。对于这两种方法之一,这两个类具有相同的功能。我可以在两个类之间共享实现以消除冗余代码吗?除了虚拟基类,我尝试使第一类成为第二类的父类,但出现了很多错误。

编辑-谢谢大家的答复。我应该提到的一件事是,我无法修改虚拟基类,因此仅将代码添加到基类将无法正常工作。

最佳答案

假设A是基类,而BC是从基类继承的类。在BC之间共享逻辑的方法称为SomeMethod。无论使用哪种情况,以下方法之一都可以解决问题:


B::SomeMethodC::SomeMethod的逻辑,然后将其复制并粘贴到A::SomeMethod
创建提供D共享版本的类SomeMethod,并让BC派生自D,该类将派生自A
创建一个只提供所需实现的类SomeMethodImpl,然后B::SomeMethodC::SomeMethod的实现将方法调用委托给SomeMethodImpl::SomeMethod的私有实例

关于c++ - 在C++中的虚拟基类的两种实现之间共享方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1788035/

10-14 09:12