【发布时间】:2019-10-27 19:08:28
【问题描述】:
带有 1 个int 参数的旋转函数无效。我不知道为什么我会收到这个错误。它只是一个带有 2 个语句的 void 函数。
head_ptr_ 是私有链表变量。
getNodeAt 返回给定位置“position”的节点。由于它正在返回一个节点,我们可以从右到左访问其成员分配工作。它在分配之前完成操作数右侧的所有内容。如果我错了,请随时修正我的知识。
template <class T>
void LinkedList<T>::rotate(int k)
{
head_ptr_ = getNodeAt(k)->setNext(head_ptr_);//error here
head_ptr_ = getNodeAt(k-1)->setNext(nullptr);
}//end of rotate
template<class T>
Node<T>* LinkedList<T>::getNodeAt(int position) const
{
// Count from the beginning of the chain
Node<T>* cur_ptr = head_ptr_;
for (int skip = 0; skip < position; skip++)
cur_ptr = cur_ptr->getNext();
return cur_ptr;
} // end getNodeAt
int main()
{
LinkedList<int> bag1;
for(int i = 14;i >= 10;i--)
{
bag1.insert(bag1.getLength(),i);
}
bag1.print();
cout << endl;
//bag1.invert();
bag1.rotate(3);
bag1.print();
system("PAUSE");
return 0;
}
错误:应忽略的无效值
【问题讨论】:
-
getting this error- 什么错误? -
setNext有什么回报吗? -
我认为问题在于您不能为
template类提供单独的.cpp文件。您必须将声明和定义放在一个文件中。 -
@KamilCuk 错误消息位于代码块底部。
-
您的 setNext() 函数返回 void,您正在尝试将 setNext() 的返回值分配给变量。
标签: c++ error-handling linked-list void