我有一个虚拟基类和两个实现各种方法的类。对于这两种方法之一,这两个类具有相同的功能。我可以在两个类之间共享实现以消除冗余代码吗?除了虚拟基类,我尝试使第一类成为第二类的父类,但出现了很多错误。
编辑-谢谢大家的答复。我应该提到的一件事是,我无法修改虚拟基类,因此仅将代码添加到基类将无法正常工作。
最佳答案
假设A
是基类,而B
和C
是从基类继承的类。在B
和C
之间共享逻辑的方法称为SomeMethod
。无论使用哪种情况,以下方法之一都可以解决问题:
取B::SomeMethod
和C::SomeMethod
的逻辑,然后将其复制并粘贴到A::SomeMethod
创建提供D
共享版本的类SomeMethod
,并让B
和C
派生自D
,该类将派生自A
创建一个只提供所需实现的类SomeMethodImpl
,然后B::SomeMethod
和C::SomeMethod
的实现将方法调用委托给SomeMethodImpl::SomeMethod
的私有实例
关于c++ - 在C++中的虚拟基类的两种实现之间共享方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1788035/