2011-10-12 68 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()的实际执行情况,但那是您的作业:)

相关问题