【问题标题】:error: cannot convert Elem to Elem* for argument 1 to void addHead(Elem*, Elem*)错误:无法将参数 1 的 Elem 转换为 Elem* 到 void addHead(Elem*, Elem*)
【发布时间】:2011-10-12 01:31:14
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    它非常具体:您传递了一个Elem,但它需要一个Elem*。特别是,head 的类型为 Elem*,但您传递的 *head: 类型为 Elem

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2016-11-25
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多