2016-03-15 56 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的繼承。然後實現它。