我有三個類:一個TopClass
其中包含一個BottomClass
指針的實例。 BottomClass
包含指向HelperClass
的指針。 HelperClass
保持指向TopClass
的指針。循環依賴項彈出,並且HelperClass
需要前向聲明。爲什麼前向聲明不能修復循環依賴?
所有這一切都說明用下面的代碼片段:
#include "BottomLevel.h"
namespace foo
{
class TopLevel
{
private:
BottomLevel* item;
};
}
-
#include "HelperClass.h"
namespace foo
{
class BottomLevel
{
private:
HelperClass* item;
};
}
-
class TopLevel; // forward declaration here
namespace foo
{
class HelperClass
{
public
HelperClass(TopLevel* item);
};
}
試圖做的事情在執行文件時,問題來。如果我在cpp文件中使用#include "TopClass.h"
,則會出現編譯錯誤,指出「找不到重載成員函數 - 使用未定義類型'TopLevel
'」(錯誤C2511和C2027)。
然後,如果我不做#include
我仍然留下C2027錯誤,因爲我嘗試使用正向聲明類型。
我只知道有一種方法可以解決這個問題,我確信我以前做過,但是我無法記住我應該做的事情。請幫忙嗎?
/捂臉 - 你的先生,玷污了我。謝謝! – Anthony 2011-02-06 03:06:15