(第一篇文章到stackoverflow所以也许我没有发布在哪里/我应该如何,sry)
TL; DR:我如何在R6中创建这个特定的继承:
MOTHER (MOTHER is a virtual class)
/ | \
/ | \
/ | \
/ | \
Daughter1 Son Daughter2 (Son is a vitual class)
\ / \ /
\ / \ /
\ / \ /
\ / \ /
Incest1 Incest2 (Incestuous but no diamond issues)
同样的方案是可用的S4,我做了它,我实际上试图将我的S4类转换为参考R6。但关于R6类的文档并不是那么大,我无法找到如何做到这一点。
如果那是不可能的,我将不得不复制一些代码,即“Son”的所有方法,我不想这样做。
我打电话给最近两节乱伦乱伦,但我很认真:我这里没有钻石问题,女儿和儿子提供的方法根本不一样。
如果你想到另一个可以取代这个的方案,我很乐意听到它:母亲和儿子的条款是虚拟的(在R6中真的不可行吗?但是我不在乎),所以也许我不会考虑继承问题。
请求帮助。
**编辑:**
好的,我找到了解决方案。 由于乱伦的完全是儿子和女儿(因为他们是儿子和女儿),所以不仅仅重建了多重继承机制吗?那就是:
1°对于Son没有并且需要继承的每个函数,在子中构建一个包含相同名称的包装器方法,在其中调用一个通用的coercice()方法。
2°强制方法只是做R6 shoudl做的事情:它初始化一个“Son”元素和一个“子”元素,并检查它们两个是我们作为参数存在时传递的方法。如果它只为一个人做,那就让他们去用这个强制的乱伦来称呼它现在是一个儿子或一个女儿。如果两者都实现它,它会对我大喊大叫(但它可以做其他事情!)
它非常难看,但它起作用并且做我想做的事情。
Actualy,它并不是那么难看,它只是实现应该的一些东西。你认为这可以做得更好吗?