我在c ++和cocos2dx中都有这样的课程。
Node
/ \
Sprite DrawNode
| |
ClassA ClassB
现在我想要这些类共享一些功能。我想创建一个抽象类来做到这一点。像这样
___________ Node _________
/ \
Sprite __ ClassC __ DrawNode
\ / \ /
ClassA ClassB
但现在我遇到了问题。如果我的类C没有扩展Node,我只是获得访问或Node或C类的功能,但如果我的C类扩展Node我得到两个Node函数的实现。 有什么方法可以解决这个问题,或者只是忘记classC并复制A和B中的方法,然后使用强制转换来执行它们。
答案 0 :(得分:0)
你遇到了“钻石问题”(见https://en.wikipedia.org/wiki/Multiple_inheritance)。
你想在这里完成什么?
A类和B类已经是一个节点。因此,您可以执行节点的功能(旋转,翻译,运行操作)。我们不需要来自CCNode的C类继承。
如果您希望A类和classB共享相同的功能。只需在C类中声明纯虚方法,从类C中创建A类和B类继承。然后实现它。