C ++模拟类-如何解决此多重继承问题?

时间:2019-03-28 23:56:04

标签: mocking c++14 abstract-class multiple-inheritance diamond-problem

我绘制了一个类图来说明我的问题:

Class Diagram

它是带有一些抽象接口类的简单类层次结构。灰色类显示了一些我想用于测试的模型。像往常一样,模型是从接口类派生的。这对于“ MockAnimal”来说很好,但是在“ MockFish”和“ MockBird”中遇到了一些问题。

为了不复制代码并简化我的模型,在这些类(多重继承)中使用'MockAnimal'的模拟方法会很棒。然后,我只需要重写/模拟来自子接口(“ IFish”和“ IBird”)的方法。这行不通,因为我想我在这里面临某种钻石问题,因为'MockAnimal'的方法也在'ConcreteAnimal'中实现。因此,我的“ MockFish”和“ MockBird”将获得这两个实现,但是我只希望它们来自“ MockAnimal”。

作为一种解决方法,我更改了类层次结构,只是从接口“ IFish”和“ IBird”派生了“ MockFish”和“ MockBird”。但是我认为这不是一个好的解决方案,因为样机将使用'ConcreteAnimal'的全部实现。

我希望这是可以理解的。有什么好的解决方案可以实现我想要的吗?

0 个答案:

没有答案