C++ 中的虚拟继承是防止菱形问题的有用方法。但是,我似乎无法使其在每种情况下都能正常工作。
这将很难解释,但我希望我能做到。让我们提出问题:
A 继承 B。A 是一个名为 C 的类集和另一个名为 D 的类集的基类。
问题在于 C 类集具有围绕 B 的共同特征。
我想做但不可能的是一个类 E,它实际上继承了 B,并且由 C 继承。问题是:
在这种情况下,A 实际上并没有继承 B。所以它不起作用。
如果 A 要虚拟继承 B,那么我需要在 D 的每个类中使用 B 的构造函数。
结论:在每种情况下都有重复的代码。在没有任何重复代码的情况下,我怎样才能摆脱这个问题?