Io ho la mia classe IntegerList che estende da List<T> e quest'ultima a sua volta utilizza Nodo<T> per contenere le informazioni.
Nel file list.cpp vado a definire l'overloading dell'operator<< per stampare il contenuto di una lista in questo modo:
template <typename T>
ostream& operator<<(ostream& output, const List<T>& lista)
{
Nodo<T>* aux = lista.head;
if (aux == NULL)
output << "Lista vuota.";
else
{
while (aux != NULL)
{
output << aux->getValue() << " ";
aux = aux->getNext();
}
}
return output;
}
e nel main vado a chiamare quest'operatore con
cout << list
(dove list è un'istanza di IntegerList).
Il linker però mi dà quest'errore quando provo a compilare il sorgente:
Errore LNK2019 riferimento al simbolo esterno "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class List<int> const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$List@H@@@Z) non risolto nella funzione _main
ma ho incluso l'header iostream e il namespace std in tutti gli header del progetto (list.hpp, nodo.hpp, integerList.h e nel main) ma nonostante questo continua a darmi quell'errore, mentre tutte le altre funzioni template le legge senza problemi.
qualcuno mi saprebbe aiutare?