2013-07-01 43 views
1

我認爲在我的下面的代碼中似乎有typedefs的循環依賴...有什麼辦法可以解決這個問題嗎?這是我的問題的簡化表達。無論我在哪裏放置typedef語句,它都不想正確解析。不知道如何正確解析typedef

struct Item { 
    int id; 
    ItemList* ptrToList; 
} 

typedef std::list<Item> ItemList; 

回答

3

你可以解決它像這樣(MSVC2012下編譯)

struct Item; 
typedef std::list<Item> ItemList; 

struct Item 
{ 
    Item* item; 
    ItemList list; 
}; 

注:我的結構比你的略有不同,但仍說明了這一點。

+0

的*小的差異*與原來可能有超出你所期望的影響。我不確定你是否還沒有創建一個未定義的行爲,並在那裏做了些許的改變......相關的引號在9.2/2和17.6.4.8/2 –

1

你可以聲明只是一個類型名稱:

struct Item; 

然後與組裝休息。

0

使用前向聲明:

struct Item; 
typedef std::list<struct Item> ItemList; 
struct Item { 
    int id; 
    ItemList* ptrToList; 
};