cocos2dx中的C ++多层次结构

时间:2016-03-15 16:24:45

标签: c++ cocos2d-x subclass hierarchy

我在c ++和cocos2dx中都有这样的课程。

       Node
    /       \
Sprite    DrawNode
   |          |
ClassA     ClassB

现在我想要这些类共享一些功能。我想创建一个抽象类来做到这一点。像这样

     ___________ Node _________
    /                          \
Sprite      __ ClassC __     DrawNode
    \      /            \      / 
     ClassA              ClassB

但现在我遇到了问题。如果我的类C没有扩展Node,我只是获得访问或Node或C类的功能,但如果我的C类扩展Node我得到两个Node函数的实现。 有什么方法可以解决这个问题,或者只是忘记classC并复制A和B中的方法,然后使用强制转换来执行它们。

1 个答案:

答案 0 :(得分:0)

你遇到了“钻石问题”(见https://en.wikipedia.org/wiki/Multiple_inheritance)。

你想在这里完成什么?

  • A类和B类已经是一个节点。因此,您可以执行节点的功能(旋转,翻译,运行操作)。我们不需要来自CCNode的C类继承。

  • 如果您希望A类和classB共享相同的功能。只需在C类中声明纯虚方法,从类C中创建A类和B类继承。然后实现它。