C++ 错误:无法将参数1的Elem转换为Elem*,以使addHead无效(Elem*,Elem*)
我正在用g++-g编译代码,并且在标题中得到了错误消息 该错误与我所做的一个函数有关,其签名为: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
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()
的实际实现,但这是您的家庭作业:)