“无法初始化类型的非const引用...”clone()函数出错

时间:2015-02-11 17:17:40

标签: c++ templates clone

美好的一天

我很忙在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;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您可以将克隆功能更改为:

template<class T>
LinkedList<T>* LinkedList<T>::clone()
{
    return new LinkedList<T>(*this);
}

请记住在调用克隆功能后释放内存。