我正在编写一个函数,该函数返回对链表的引用。问题是,C ++ 在返回列表之前对其进行了销毁,这给了我一个无用的列表和很多分段错误。 这是代码:
template<typename T>
ListaEnlazada<T>& ListaEnlazada<T>::concatena(const ListaEnlazada<T>& l)
{
ListaEnlazada<T> nuevaLista(*this);
Iterador<T> i = l.iterador();
while (!i.fin())
{
Nodo<T>* nuevo = new Nodo<T>(i.esto());
if (nuevaLista.cola)
nuevaLista.cola->next = nuevo;
nuevaLista.cola = nuevo;
nuevaLista.numDeElementos++;
i.siguiente();
}
return nuevaLista;
}
我不明白为什么会这样。复制构造函数可以正常工作,而析构函数也可以正常工作。