我已经创建了一个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);
}