Bonjour, j ai un code qui ressemble a ca :
et j'obtiens ce message du compilateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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){ /* .... */ }
Je ne comprends pas cette histoire d'un seul argument vu que j'ai bien l'impression d'en déclarer deux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) ^ ^
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager