cocos2dx中的C++多层次结构
问题描述:
我在C++和cocos2dx中有几个类是这样的。cocos2dx中的C++多层次结构
Node
/ \
Sprite DrawNode
| |
ClassA ClassB
现在我想要这些类会共享一些功能。我想过要创建一个抽象类来做到这一点。像这样
___________ Node _________
/ \
Sprite __ ClassC __ DrawNode
\ / \ /
ClassA ClassB
但现在我有一个问题。如果我的类C不扩展Node,我只是获得访问或Node或C类的函数,但如果我的C类扩展节点,我会得到Node函数的两个实现。 有没有什么办法解决这个问题,或者只是不得不忘记classC并复制A和B中的方法,然后使用强制转换来执行它们。
答
你进入了“钻石问题”(见)。
你想在这里完成什么?
A类和B类已经是一个节点。所以你可以执行节点的功能(旋转,平移,运行动作)。我们不需要CCNode的C类继承。
如果您想让A类和classB共享相同的功能。只需在类C中声明纯虚方法,从类C中构造类A和类B的继承。然后实现它。
使用虚拟内置? – Zen