Bonjour,
Je me suis lancé à regarder des cours (livres, tut, faq, vidéos) en C++ , puis j'essaye de pratiquer par moi même via du code que je teste, il y a une notion que je ne comprends pas bien. J'essaye de surcharger l'operator<< pour afficher un objet de type point avec ses coordonnées x,y ! J'ai simplifié le code en retirant la classe fille, je ne m'en sers pas pour cet exemple, d'où le fait que les variables soient en "protected"...pour quand je la réutiliserai... Voilà le code du fichier d'en tête HPP, pas de problème dessus à priori...
Voilà ce que je souhaite surcharger dans le CPP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
il me dit que pt::point::m_x et pt::point::m_y sont inaccessibles...par contre, ça marche très bien quand je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
Mon hypothèse est que j'ai déclaré cette fonction en tant qu'amie dans la classe point pour accéder à ses membres m_x et m_y sous le namespace pt et qu'il faut donc que cette fonction soit aussi dans le namespace pt....mais j'aurais aimé voir si je pouvais mettre des opérateurs de résolution de portée, mais il n'en veut pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
j'ai essayé de mettre des pt:: un peu partout devant ou après les std ou à la place, mais il n'en veut pas, pourtant l'opérateur de portée pt:: devrait me permettre d'éviter de mettre la fonction dans namespace pt {} !???
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6std::ostream& pt::operator<<(std::ostream &flux, const pt::point& p) { flux << "x : " << p.m_x << " - y : " << p.m_y; return flux; }
Fonction amie + namespace + classe + surcharge operateur<< y a plusieurs principes que je ne maîtrise pas quand tout est combiné ensemble...!
Merci.

 

 
		
		 
         
 

 
			
			

 
   


 Surcharge operator<< avec namespace
 Surcharge operator<< avec namespace
				 Répondre avec citation
  Répondre avec citation


 
  et cela semble complexe
 et cela semble complexe  Mais ce que je soupçonne, c'est que l'opérateur de résolution de portée (::) ne sert qu'à spécifier 1 ""élément"" déjà défini.
 Mais ce que je soupçonne, c'est que l'opérateur de résolution de portée (::) ne sert qu'à spécifier 1 ""élément"" déjà défini. , mais c'est écrit
, mais c'est écrit
Partager