嘿所以我理解的錯誤,每當我嘗試做這樣的事情:取消引用指向不完全類型(節點)
void swap(struct lnode* n1){
struct lnode*temp = n1->next;
}
我以爲我可以有臨時指針指向N1->未來但它給了我不完整類型錯誤的解引用指針。誰能幫我?
感謝
嘿所以我理解的錯誤,每當我嘗試做這樣的事情:取消引用指向不完全類型(節點)
void swap(struct lnode* n1){
struct lnode*temp = n1->next;
}
我以爲我可以有臨時指針指向N1->未來但它給了我不完整類型錯誤的解引用指針。誰能幫我?
感謝
要訪問結構成員像這樣的聲明是不夠的:
struct lnode;
這給你一個不完全類型:編譯器現在知道該結構的名稱,但不知道哪些字段包含。你可以指向不完整的類型,但是你不能訪問它們的成員,計算它們的大小,或者做任何需要知道結構成員的東西。
需要完整的定義。如:
struct lnode
{
struct lnode *next;
/* other fields */
};
你需要有struct lnode
範圍的完整的聲明。否則, 編譯器如何知道在哪裏可以找到next
成員?
您的問題表明,編譯器不會有什麼葉子節點是即非結構葉子節點的全貌知名度。也許你可以多發一點你的代碼給我們幫忙。
所以我必須在類的右邊定義結構? – Mark
不一定在課堂上,但你需要在你引用'next'或其他成員的地方提供完整的聲明,或者需要知道結構的大小。 –