链表指针错误没有意义

Linked List pointer error makes no sense

本文关键字:有意义 错误 指针 链表      更新时间:2023-10-16

我已经创建了一个ListNode类:

ListNode::ListNode()
{
  value = 0;
  next = NULL;
  previous = NULL:
}

所以我有这个函数应该返回头部后面的节点:

ListItr List::first()
{
  ListItr* first = new ListItr(head->next);
  return first;
}

我将参数head->next传递给这个函数:

ListItr::ListItr(ListNode* theNode)
{
  current = theNode;
}

当我尝试编译我的代码时,我得到一个错误,说no viable conversion from 'ListItr *' to 'ListItr'

错误下面的注释说:

`candidate constructor (the implicit copy constructor) not viable: no know conversion from 'ListItr *' to 'const ListItr &' for 1st argument; dereference the argument with *

我不明白我的代码感觉出了什么问题,函数期望传递一个点,这就是我传递的。

您不必调用new来创建所有,这不是Java。只有在想要创建指向动态分配对象的指针时才使用new。这里你只是试图创建并返回一个普通对象,而不是一个动态创建的对象。

ListItr List::first()
{
  ListItr* first = new ListItr(head->next);
  return first;
}
应该

ListItr List::first()
{
  return ListItr(head->next);
}