en révisant pour mon control de demain j’ai trouvé une question bizarre
Fonction amie qui permet de surcharger l’opérateur << sur un flot de sortie en mode texte
Ca veut dire quoi une fonction amie ??????
en révisant pour mon control de demain j’ai trouvé une question bizarre
Fonction amie qui permet de surcharger l’opérateur << sur un flot de sortie en mode texte
Ca veut dire quoi une fonction amie ??????
Je viens de commencer de réviser les fichiers (les Flots) et j’ai trouvé une difficulté pour lire un fichier binaire
Ce code me donne un beug car je pense que le problème c’est que je sais pas la taille de la chaîne que je lis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Mch Mch::load(String name){ Mch t; ifstream f; f.open(name,ios::binary); f.read(t.ip,20); f.read(t.nom,20); f.close(); return t; }
Si tu veux implementer l'operateur << a l'interieur de ta classe voila ce que sa donne:
Le probleme c'est que l'operateur se trouve avant ton objet, ce code ne compile donc pas. Il faut donc le déclarer de maniere general, mais cela pause un probleme car si tu le declare a l'exterieur de ta classe il n'est pas possible d'accéder aux membres de ta classe. Donc voila la solution le déclarer en friend.
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
20
21
22 #include <iostream> using namespace std; class Toto { public: Toto() {} ostream& operator <<( ostream& os ) { os <<"From Toto" ; return os; } }; int main() { Toto o; cout << o; return 0; }
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
20
21
22
23
24 #include <iostream> using namespace std; class Toto { string _str; public: Toto() { _str = "From Toto"; } friend ostream& operator << (ostream& os, const Toto& r); }; ostream& operator << (ostream& os, const Toto& r) { os << r._str.c_str() ; return os; } int main() { Toto o; cout << o << endl; return 0; }
En C++, Un ami d'une classe c'est quelqu'un (classe ou fonction) qui a le droit de toucher les parties privées d'une classe.
themadmax >>Ca n'a pas beaucop de sens.Si on ne peut pas implémenter << en fonction membre c'est car toute fonction membre recoit de façon implicite this en 1er paramètre or il faut que le 1er paramètre de << soit un flux.Le probleme c'est que l'operateur se trouve avant ton objet, ce code ne compile donc pas.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
dot-_-net >> pour ton 2eme code, sans les erreurs on peut pas faire grand chose.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
Tu trouveras toutes ces infos ici :
Que signifie 'friend' ?
Comment utiliser les flux pour afficher ou saisir mes objets ?
et de manière générale :
faq
Partager