我创建了一个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 *
我不明白我的代码感觉有什么问题,函数希望传递一个点,这就是我传递的内容。
答案 0 :(得分:0)
您不必致电new
来创建所有内容,这不是Java。只有在想要创建指向动态分配对象的指针时才使用new。在这里,您只是尝试创建并返回一个普通对象,而不是动态创建的对象。
ListItr List::first()
{
ListItr* first = new ListItr(head->next);
return first;
}
应该是
ListItr List::first()
{
return ListItr(head->next);
}