2011-10-12 76 views
0

我使用g ++ -g編譯我的代碼,並在標題中獲得錯誤消息。錯誤:無法將參數1轉換爲Elem *爲void addHead(Elem *,Elem *)

的錯誤與我取得了一個功能,它的簽名幸福:

void addHead(Elem *&start , Elem *newStart); 

,我通過這個功能這兩個變量:

Elem * head;  
Elem * tempEl; 

,使它看起來像這樣:

addHead(*head , *tempEl); 

的實際功能是:

void addHead(Elem start , Elem newStart) 
{ 
Elem listItem; 

listItem = newStart; 
*listItem.next = start; 
start = listItem; 
} 

它將第二個參數預置爲從第一個參數開始的鏈接列表的開頭。

我一直在用這個拉我的頭髮。無論我做什麼,我都會收到這個錯誤!

cannot convert Elem to Elem* for argument 1 to void addHead(Elem*, Elem*) 

編輯:忘記這個錯誤是有太多:

error: invalid initialization of reference of type Elem*& from expression of type Elem 

回答

3

它是非常具體:你傳遞一個Elem,但它需要一個Elem*。特別是,head的類型是Elem*,但您要通過*head:類型爲Elem

此外,您的定義簽名與您的定義不符,所以即使修復了通話,當它找不到addHead(Elem*, Elem*)時也會收到鏈接器錯誤。定義必須正好他們的簽名(更正確地說,聲明)。當然,這些變化都不會修復addHead()的實際執行情況,但那是您的作業:)

相關問題