2016-03-15 55 views
0

我在C++和cocos2dx中有几个类是这样的。cocos2dx中的C++多层次结构

 Node 
    /  \ 
Sprite DrawNode 
    |   | 
ClassA  ClassB 

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

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

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

+0

使用虚拟内置? – Zen

回答

0

你进入了“钻石问题”(见​​)。

你想在这里完成什么?

  • A类和B类已经是一个节点。所以你可以执行节点的功能(旋转,平移,运行动作)。我们不需要CCNode的C类继承。

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