我認爲在我的下面的代碼中似乎有typedefs的循環依賴...有什麼辦法可以解決這個問題嗎?這是我的問題的簡化表達。無論我在哪裏放置typedef語句,它都不想正確解析。不知道如何正確解析typedef
struct Item {
int id;
ItemList* ptrToList;
}
typedef std::list<Item> ItemList;
我認爲在我的下面的代碼中似乎有typedefs的循環依賴...有什麼辦法可以解決這個問題嗎?這是我的問題的簡化表達。無論我在哪裏放置typedef語句,它都不想正確解析。不知道如何正確解析typedef
struct Item {
int id;
ItemList* ptrToList;
}
typedef std::list<Item> ItemList;
你可以解決它像這樣(MSVC2012下編譯)
struct Item;
typedef std::list<Item> ItemList;
struct Item
{
Item* item;
ItemList list;
};
注:我的結構比你的略有不同,但仍說明了這一點。
你可以聲明只是一個類型名稱:
struct Item;
然後與組裝休息。
使用前向聲明:
struct Item;
typedef std::list<struct Item> ItemList;
struct Item {
int id;
ItemList* ptrToList;
};
的*小的差異*與原來可能有超出你所期望的影響。我不確定你是否還沒有創建一個未定義的行爲,並在那裏做了些許的改變......相關的引號在9.2/2和17.6.4.8/2 –