Incompréhension d'une erreur à la compilation.
Bonjour, j ai un code qui ressemble a ca :
Code:
1 2 3 4 5 6 7 8 9
|
template<typename T> class A{
/* ... */
template<typename E> friend ostream& operator << (ostream&, const A<E>& );
};
template<typename E> ostream& A<E>::operator<<(ostream& out, const A<E>& G){
/* .... */
} |
et j'obtiens ce message du compilateur :
Code:
1 2 3 4
|
error: std::ostream& A<E>::operator<<(std::ostream&, const A<E>&) must take exactly one argument
template<typename E> ostream& A<E>::operator <<(ostream& out, const A<E>& G) ^
^ |
Je ne comprends pas cette histoire d'un seul argument vu que j'ai bien l'impression d'en déclarer deux...
Edit :
Je laisse ma question originale mais j'y adjoins un copier/coller d'un extrait du code réel... (malgré mes relectures je ne vois toujours pas ou est le problème...)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
template<typename T> class Graph {
/* .... */
template<class E> friend ostream& operator << (ostream&, const Graph<E>& );
virtual
~Graph (){for(auto it=nodes.begin() ; it!=nodes.end(); it++) delete *it;}
};
template<class E> ostream& Graph<E>::operator << (ostream& out, const Graph<E>& G)
{
const string pad=" ";
/* ... */
return out;
} |