Ho fatto una classe template lista e sto cercando di implementare l'overload dell'operatore <<, solo che mi da i seguenti errori (c++ builder)
codice:
[ILINK32 Error] Error: Unresolved external 'operator <<(std::basic_ostream<char, std::char_traits<char> >&, const Lista<int>&)' referenced from C:\USERS\VINCENZO\DESKTOP\LISTAOOP\DEBUG\MAIN_LL_OOP.OBJ
Questo è il codice: (solo delle parti significative, sennò diventa lungo...
codice:
template <class T>
class Lista{
friend ostream& operator << (ostream&,const Lista<T>&);
friend istream& operator >> (istream&,Lista<T>&);
friend Lista operator +(const Lista&,const Lista&); //non implementato ancora
public:
Lista();
Lista(const Lista&);
~Lista();
bool inserisciInTesta(const T&);
bool inserisciInCoda(const T&);
bool inserisciPostoI(const T&,int i);
bool rimuoviInTesta(T&);
bool rimuoviInCoda(T&);
bool rimuoviPostoI(T&,int i);
bool getInfoPostoI(T&,int i) const;
int getDim() const;
bool operator ==(const Lista&);
void reset();
private:
Nodo<T> *testa;
int dim;
};
template <class T>
ostream& operator <<(ostream& out,const Lista<T>& x)
{
T valore;
for(int i=1;i<=x.getDim();i++)
{
x.getInfoPostoI(valore,i);
out<<valore<<' ';
}
return out;
}
Ma cosa sbaglio???
Non riesco a capire perchè il linker non trova la funzione di overload dell'operatore <<