1
我正在爲遊戲引擎製作基於組件的實體系統。C++:概念性循環包含問題
我有一個實體類,其具有包括所述部件基類報頭,以限定組件數組private Component* components[ 123 ]
然而,在部件基類我必須定義一個private Entity* ownerEntity
,怎麼一回事,因爲它是至關重要一個組件知道它屬於誰!
這導致Entity.h需要Component.h,反之亦然 - >循環引用
我該如何解決這個問題?
*真的嗎?*太棒了! – Ricc 2010-11-05 22:05:40
事實上,因爲在這兩個類中你只需要指針,所以你可以(應該!)前向聲明依賴項,而不是將它們包含在兩個頭中。在這種情況下,這兩個標題都不應該依賴於另一個;這將使編譯時間超快。沖洗並重復所有其他參考,指針和它們的const對應每個類。 **另外**:閱讀[Herb Sutter關於編譯時依賴關係的解釋](http://www.gotw.ca/gotw/007.htm)。 – wilhelmtell 2010-11-05 22:15:02
你可以把這個想法做得太過分 - 我曾經「巧妙地」向前聲明auto_ptr,所以我可以有一個非常低級的類包含一個很少使用的toString()方法,返回auto_ptr 。這意味着你需要'#include '無論你在哪兒做*調用它,並且如果你不這樣做的話,你從gcc得到的錯誤很難直觀。 –
2010-11-05 22:15:49