C++ 错误:无法将参数1的Elem转换为Elem*,以使addHead无效(Elem*,Elem*)

C++ 错误:无法将参数1的Elem转换为Elem*,以使addHead无效(Elem*,Elem*),c++,pointers,compiler-errors,linked-list,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 lis

我正在用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

这非常具体:您传递的是
元素,但它需要
元素*
。特别是,
head
属于
Elem*
类型,但您正在传递
*head
:属于
Elem
类型

此外,您的定义签名与您的定义不匹配,因此即使在修复呼叫时,如果无法找到
addHead(Elem*,Elem*)
,也会出现链接器错误。定义必须精确到其签名(更准确地说,是声明)。当然,这两个更改都不会修复
addHead()
的实际实现,但这是您的家庭作业:)