2012-10-10 74 views
1

嘿所以我理解的錯誤,每當我嘗試做這樣的事情:取消引用指向不完全類型(節點)

void swap(struct lnode* n1){ 
    struct lnode*temp = n1->next; 
} 

我以爲我可以有臨時指針指向N1->未來但它給了我不完整類型錯誤的解引用指針。誰能幫我?

感謝

回答

2

要訪問結構成員像這樣的聲明是不夠的:

struct lnode; 

這給你一個不完全類型:編譯器現在知道該結構的名稱,但不知道哪些字段包含。你可以指向不完整的類型,但是你不能訪問它們的成員,計算它們的大小,或者做任何需要知道結構成員的東西。

需要完整的定義。如:

struct lnode 
{ 
    struct lnode *next; 
    /* other fields */ 
}; 
0

你需要有struct lnode範圍的完整的聲明。否則, 編譯器如何知道在哪裏可以找到next成員?

+0

所以我必須在類的右邊定義結構? – Mark

+0

不一定在課堂上,但你需要在你引用'next'或其他成員的地方提供完整的聲明,或者需要知道結構的大小。 –

0

您的問題表明,編譯器不會有什麼葉子節點是即非結構葉子節點的全貌知名度。也許你可以多發一點你的代碼給我們幫忙。

相關問題