我正在做一個遊戲,我有一個叫做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. C++構造函數中需要彼此的兩個類?
- 2. #include彼此的兩個類的錯誤
- 3. 兩個類包含彼此的成員
- 4. 使兩個sql字段需要彼此更新之前更改
- 5. Unity C#使兩個Sprites彼此移動
- 6. 兩個類依賴於彼此
- 7. 兩個div彼此相鄰
- 8. 我需要兩個彼此相鄰的桌子,位於頁面中心
- 9. 影響彼此的兩個div的CSS
- 10. c#類訂閱彼此的事件
- 11. 兩個圖像在彼此的頂部
- 12. 彼此相鄰的兩個紡紗器
- 13. 兩個控件在彼此的下方
- 14. 我需要將這兩個div彼此疊放,同時保持內容位置
- 15. 我有兩個單位和每個單位需要彼此的功能類。我如何避免循環引用?
- 16. 爲什麼當兩個類彼此分類時,intelliJ會凍結?
- 17. 畫出兩個彼此相交的圓,從那我需要找到使用c的相交點#
- 18. Spark Streaming兩個動作ned要彼此運行
- 19. 兩個類別使用彼此的常量
- 20. 正下方使兩個頭彼此
- 21. 將兩個div彼此堆疊
- 22. 讓兩個容器連接到彼此
- 23. 如何讓兩個div低於彼此
- 24. 引用兩個模型彼此
- 25. 將兩個div彼此對齊
- 26. 如何讓兩個表彼此相處?
- 27. 從兩個XML依賴於彼此
- 28. 兩個tableView函數彼此衝突
- 29. 兩個TypeBuilders調用彼此非法?
- 30. 使這兩個div彼此相鄰
聽起來像你想要的是一個前瞻性聲明。 – mooware 2010-07-06 20:37:22
BlockDude +1。 – 2010-07-06 22:42:46