我正在做一個遊戲,我有一個叫做Man
的類和一個叫做Block
的類,他們都需要對方的代碼,但它們都在單獨的文件中。有沒有辦法「預定義」一個班級?像Objective-C的@class宏一樣?C++:兩個需要彼此的類
7
A
回答
5
它被稱爲循環依賴。在課堂上Two.h
class One;
class Two {
public:
One* oneRef;
};
,並在類One.h
class Two;
class One {
public:
Two* twoRef;
};
的 「一類;」和「二級」;指令分別分配一個類名「One」和「Two」;但他們沒有定義超出名稱的任何其他細節。因此,您可以創建指針類,但不能包括整個類,像這樣:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
上面兩個例子就不能編譯的原因是因爲當編譯器知道有一類一,這不是」 t知道可能包含哪些字段,方法或虛方法,因爲只定義了名稱,而不是實際的類定義。
11
是的。
class Man;
這將聲明Man
爲「不完整類型」。您可以聲明它的指針或引用以及其他一些內容,但不能創建實例或訪問它的成員。這不是一個完整的描述,你可以做什麼,不能做一個不完整的類型,但這是一般的想法。
+1
需要注意的是,您可以繼續並在以後包含完整類型並獲得訪問權限。您可以在標題中使用不完整的類型,然後將完整的標題定義包含在cpp中以利用它。 – 2010-07-06 20:41:17
相關問題
- 1. #include彼此的兩個類的錯誤
- 2. 兩個類包含彼此的成員
- 3. 使兩個sql字段需要彼此更新之前更改
- 4. Unity C#使兩個Sprites彼此移動
- 5. 兩個類依賴於彼此
- 6. HTML需要js和canvas彼此加載
- 7. 彼此相鄰的兩個紡紗器
- 8. 畫出兩個彼此相交的圓,從那我需要找到使用c的相交點#
- 9. Spark Streaming兩個動作ned要彼此運行
- 10. 兩個類別使用彼此的常量
- 11. 阻止兩個UILabel彼此重疊
- 12. 兩個tableView函數彼此衝突
- 13. 正下方使兩個頭彼此
- 14. 讓兩個容器連接到彼此
- 15. 如何讓兩個div低於彼此
- 16. ReactiveCommand根據兩個命令彼此
- 17. 將兩個表格彼此相鄰
- 18. 兩個TypeBuilders調用彼此非法?
- 19. grep兩個詞彼此靠近
- 20. 兩個jquery過濾器取消彼此
- 21. 比較兩個集合數據彼此
- 22. 彼此顯示兩個表面視圖?
- 23. 浮動兩個列表彼此之上?
- 24. 兩個節點不閒話彼此
- 25. 如何讓兩個div下彼此?
- 26. 兩個UIScrollView在彼此之上?
- 27. 彼此相關的python類
- 28. 如何使兩個亞類彼此在遊戲
- 29. 什麼術語用於描述兩個類彼此依賴?
- 30. 聲明兩個包含彼此類型的實例變量的類
聽起來像你想要的是一個前瞻性聲明。 – mooware 2010-07-06 20:37:22
BlockDude +1。 – 2010-07-06 22:42:46