Bonjour,
Je débute en C++ ainsi qu'en POO depuis quelques jours et j'apprécierai grandement votre aide.
J'aborde actuellement les classes, et en particulier l'utilisation d'opérateurs.
Je me suis imaginé un exercice dans lequel j'ai une classe nommée Monnaie qui a comme variables membres 3 valeurs numériques (livre, shilling, penny) et une string utilisable par un accesseur permettant d'afficher la valeur en texte.
Le soucis vient de l'impossibilité de passer un objet Monnaie issue d'une opération arithmétique directement dans un cout malgré la surcharge de l'opérateur << de ostream. En effet, tout fonctionne dans le programme, sauf la dernière ligne de mon main qui provoque une erreur lors de la compilation (no match for ‘operator<<’ in ‘std::operator<<):
Pourtant, la surcharge de operator<< fonctionne sachant que ceci passe à la compilation et au lancement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << objetMonnaie1 << " + 35 pence = " << objetMonnaie1 + 35 << endl;
C'est donc mon opérateur + qui met apparemment le boxon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << objetMonnaie1 << endl;
Dans la logique du programme, objetMonnaie1 + 35 renvoie pourtant bien un objet de type Monnaie, comme objetMonnaie1...
Voici le code source complet, également fourni en pièce jointe zippée :
(NB: les remarques sur l'amélioration du code pour le reste du programme sont bienvenues)
main.cpp
Monnaie.h
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Monnaie.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
23
24
25
26
27
28
29
30
31
32
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144

 

 
		
		 
         
 

 
			
			


 
   
 


 Problème avec la surcharge d'opérateur de flux
 Problème avec la surcharge d'opérateur de flux
				 Répondre avec citation
  Répondre avec citation



 
  
  
  
  
			 Envoyé par spirzouf
 Envoyé par spirzouf
					



 Mon petit doigt me dit que je devrais reprendre le code de ma fonction format qui prend les variables de Monnaie pour renvoyer une chaîne directement au flux, sans une fonction accesseur... Je vais creuser l'idée, merci de me dire si je suis dans le vrai !
 Mon petit doigt me dit que je devrais reprendre le code de ma fonction format qui prend les variables de Monnaie pour renvoyer une chaîne directement au flux, sans une fonction accesseur... Je vais creuser l'idée, merci de me dire si je suis dans le vrai !
						
Partager