错误:无法将Elem转换为Elem *以将参数1转换为void addHead(Elem *,Elem *)

时间:2011-10-12 01:31:15

标签: c++ pointers compiler-errors linked-list

我正在使用g ++ -g编译我的代码,我在标题中收到错误消息。

错误与我所做的功能有关,它的签名是:

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

1 个答案:

答案 0 :(得分:3)

这是非常具体的:你传递Elem,但需要Elem*。特别是,head的类型为Elem*,但您传递的是*headElem类型。

此外,您的定义签名与您的定义不匹配,因此即使您修复了调用,当找不到addHead(Elem*, Elem*)时也会收到链接器错误。定义必须完全他们的签名(更准确地说,声明)。当然,这些变化都不能解决addHead()的实际实现,但那是你的作业:)