美好的一天
我很忙在c ++中实现线性数据结构。我正在使用我的clone()函数。一行代码似乎是为了我,但也许错误是在复制构造函数中。 我得到的错误: linkedList.C:22:32:错误:从'LinkedList *'类型的右值开始无效初始化'LinkedList&'类型的非const引用 返回new LinkedList(* this);
template<class T>
LinkedList<T>& LinkedList<T>::clone()
{
return new LinkedList<T>(*this);
}
template<class T>
LinkedList<T>::LinkedList(const LinkedList<T>& other)
{
Node<T>* newNode;
Node<T>* current;
Node<T>* trailCurrent;
if(head != NULL)
clear();
if(other.head == NULL)
head = NULL;
else
{
current = other.head;
head = new Node<T>(current->element);
head->next = NULL;
trailCurrent = head;
current = current->next;
while(current != NULL)
{
newNode = new Node<T>(current->element);
trailCurrent->next = newNode;
trailCurrent = current;
current = current->next;
}
}
}
答案 0 :(得分:2)
您可以将克隆功能更改为:
template<class T>
LinkedList<T>* LinkedList<T>::clone()
{
return new LinkedList<T>(*this);
}
请记住在调用克隆功能后释放内存。