Bonjour,
J'ai un soucis avec une surcharge d'operateur qui ne fait pas ce que je veux.
En fait j'en ai fais deux sur le meme modele, ce qui fait que je ne comprend pas pourquoi une est acceptee et l' autre pas.
Voila j'ai une defini une class avec des variables privates div et num.
Dans ma class j'ai defini une surcharge pour mes deux elements avec le mot cle friend pour justement permettre l'acces a ces variables.
Ici j'ai implemente ma surcharge pour les deux operateurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //surcharge de l'operateur >>cin friend istream& operator >> (istream&, const fraction& F); //surcharge de l'operateur <<cout friend ostream& operator << (ostream&, const fraction& F);
(J'ai implemente et controle cout avant et separement raison pour laquelle je sais que cela marche)
Et je me prend le message d'erreur suivant:
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
16
17
18
19 //Surcharge de l'operateur cout<< ostream& operator << (ostream& flux, const fraction& F){ flux << "\n Nominateur : "; flux << F.num; flux << "\n Denominateur : "; flux << F.div; cout <<"\n"; return flux; }//Fin Surcharge cout //Surcharge de l'operateur cin>> istream& operator >> (istream& flux, const fraction& F){ cout << "\n Numerateur ?:"; flux >> F.num; cout << "\n Denominateur ?:"; flux >> F.div; return (flux); }//Fin Surcharge cin
Je ne saisit pas d'ou viens l'ambiguite.C:\Dev-Cpp\classFraction\fra.cpp In function `std::istream& operator>>(std::istream&, const fraction&)':
49 C:\Dev-Cpp\classFraction\fra.cpp ambiguous overload for 'operator>>' in 'flux >> F->fraction::num'
note C:\Dev-Cpp\include\c++\3.4.2\bits\istream.tcc:87 candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>&(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] <near match>
Est-ce que quelqu'un peut m'aider?
D'avance merci
Marc_3
Partager