Bonjour à tous !
Nous avons un petit problème de compilation avec g++. En fait nous faisons une surcharge de l'opérateur << au sein d'une classe comme suit:
Je définis ensuite cette fonctionne en dehors de la classe comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template<typename T> class Maclasse { //... constructeurs & co //surcharge de l'opérateur friend ostream & operator<< <>(ostream & os, Maclasse g); };
LA compilation et l'utilisation de cette cclasse fonctionnent sans probleme sur g++ version 3.3.X et 2.95.3 ainsi que sous visual C++ 8.0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template <typename T> ostream & operator << (ostream & os, Maclasse<T> g) { return os << "tests" << endl; }
Cependant j'utilise actuellement g++ 3.4.1 et la compilation me cree une erreur, disant que le template ne correspond pas:
error: template-id `operator<< <>' for `std::basic_ostream<char, std::char_traits<char> >& operator<<(std::basic_ostream<char, std::char_traits<char> >&, Maclasse<int>)' does not match any template declaration
Quelqu'un aurait il une idée?
Merci
Partager