链接列表指针错误没有意义

时间:2015-09-07 00:54:12

标签: c++ pointers linked-list

我创建了一个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 *

我不明白我的代码感觉有什么问题,函数希望传递一个点,这就是我传递的内容。

1 个答案:

答案 0 :(得分:0)

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

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

应该是

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