Originariamente inviato da December_
Che cosa dovrei fare?
Personalmente preferisco evitare il ginepraio di cui sotto, scrivendo direttamente il codice della funzione nel corpo della classe. Altrimenti:
codice:
// Forward declaration
template<class T> class array;
// Dichiarazione prototipi
template <class T>
friend ostream& operator<< (ostream&,const array<T> );
template <class T>
friend istream& operator>> (istream&,array<T>& ) ;
// Definizione classe.
template<class T> class array
{
friend ostream& operator<< (ostream&,const array<T>& );
friend istream& operator>> (istream&,array<T>& ) ;
};
// Definizione delle funzioni friend.
template <class T>
friend ostream& operator<< (ostream&,const array<T> ) {
/* corpo funzione */
}
friend istream& operator>> (istream&,array<T>& ) {
/* corpo funzione */
}