Tieni a mente che nell' unione le due liste (almeno per mantenere un pò di coerenza con gli operatori) non dovrebbero essere modificate cioè:
codice:
lista l1, l2;
// Immagazzinamento dati liste;
lista l3 = l1 + l2;
Qui l3 viene modificato (in questo caso anche inizializzato) ma l1 e l2 no. Quindi l' overload dell' operatore + dovrebbe prendere come input le due liste da unire e restituire una nuova lista (l' unione tra le due d' input) ... Ovvero:
codice:
lista lista::operator+ ( const lista& left )
{
lista unionList;
/* Copia i dati della prima lista */
nodo currNode = l;
while( currNode != NULL )
{
unionList.AddNode(currNode->valore );
currNode = currNode->succ;
}
/* Copia i dati della seconda lista */
currNode = left.l;
while( currNode != NULL )
{
unionList.AddNode( currNode->valore );
currNode = currNode->succ;
}
return unionList;
}
Nota che in questo codice ho fatto assunzione che ci sia un metodo AddNode il cui scopo dovrebbe essere semplice da capire (e anche la presenza di un costruttore di copia appropriato) ...
EDIT : SCUSA PER LE CONTINUE MODIFICHE