Salve volevo chiedervi una cosa...
Vorrei unire due liste di dati, ma mi da un errore.
Partiamo dalla seguente struttura semplificata (metto quello che serve):
file.h
codice:
struct nodo
{
int valore;
nodo *succ;
};
class lista
{
private:
nodo *l;
public:
lista(){l=0;} //Costruttore
~lista(); //Distruttore
};
Supponiamo che voglia definire due liste nel main.cpp , quindi:
codice:
lista l1;
lista l2;
Ora voglio unire le due liste (che hanno un numero "x" di elementi), tramite l'overloading dell'operatore "+".
Quindi scriverò nel file.h:
codice:
struct nodo
{
int valore;
nodo *succ;
};
class lista
{
Private:
nodo *l;
public:
lista(){l=0;} //Costruttore
~lista(); //Distruttore
nodo* operator+(nodo* l1,nodo* l2);
};
E nel sottoprogramma file.cpp:
codice:
nodo* lista::operator+(nodo* l1,nodo* l2){
nodo* t;
t=l2;
if(l2==NULL)
return l1;
else if(l1==NULL)
return l2;
else
while(l2->succ!=NULL){
l2=l2->succ;
};
l2->succ=l1;
l2=t;
return l2;
};
Ora però compilando mi da il seguente errore:
In file included from contatore.cpp:4:
contatore.h:26: error: `nodo* lista:

perator+(nodo*, nodo*)' must take either zero or one argument
contatore.cpp:207: error: `nodo* lista:

perator+(nodo*, nodo*)' must take either zero or one argument
La cosa strana, è che in un'esercizio simile, ho usato la sintassi :
codice:
struct Complex {
float Re;
float Im;
};
Complex operator+(const Complex& A, const Complex& B) {
Complex Result;
Result.Re = A.Re + B.Re;
Result.Im = A.Im + B.Im;
return Result;
}
E sembrava funzionare.
Quale può essere il problema?
Cioè , vorrei passargli le due liste, e poi unirle.
O provato a cercare, ma non ho trovato risposte (anche su siti inglesi).
Forse l'errore sarà stupido, ma non riesco a vederlo....
Se qualcuno riesce a darmi una risposta, lo ringrazio in anticipo.