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.