Eh oui, c'est une fonction libre pas une fonction membre - 50ème édition -
Version imprimable
Eh oui, c'est une fonction libre pas une fonction membre - 50ème édition -
Normalement ça marche très bien en la déclarant DANS la classe.
De toute façon que je la déclare dans le .h (dans ma classe ou non) ou dans le .cpp, ca ne change rien, le compilateur me dit toujours :
error C2804: binary 'operator <<' has too many parameters
Normalement, oui, mais pour toi, non.
(qu'est-ce que vous voulez répondre d'autre à ça ? :? )
Je ne sais pas, on lui dit et on lui répète que c'est une fonction libre et non une fonction membre, il ya un exemple dans la FAQ et tout et tout, et il persiste à la laisser dans la classe. C'est pourtant une fonction qu'on appelle comme ça :Citation:
Envoyé par Médinoc
Et pasCode:cout << instance
!Code:instance.operator<<(cout)
Bon alors, j'ai déclaré la surcharge dans un fichier totalement indépendant.
Et pour changer j'obtiens une erreur :
Code:
2
3
P.S. : moi c'est ELLE et non IL ;)
Ah, OK ;)
Comment ça se fait qu'il demande un const std::...... ?
Normalement, tu devrais avoir dans ta fonction operator<< des appels aux accesseurs des variables.
Ensuite, c'est std::ostream&
Ok mam'zelle !
bon et bien tu as essayé en rajoutant dans le .h de destinataire
ostream& operator << (ostream & fluxSortie, const Destinataire &dest);
et apres le }; de fin de ta classe, en plus
la definition des fonction mets-les dans un fichier a part (operator.cpp par ex), c'est une fonction libre donc pas DANS la classe !, rajoute juste operator.o a la compile (dans ton makefile par ex)
Mes assesseurs sont déclarés comme cela:
const std::string get_matricule() const;
Serait-ce cela qui pose problème???
Je crois bien oui... ;)
C'est possible si tu met ....const Destinataire &dest); pour la surcharge... enfin je crois, mais essaye dans un fichier a part !ou n'importe ou mais pas DANS la definition de la classe.Citation:
Envoyé par Sachiel31
Essaie plutôt de faire des const std::string& en type de retour.
Ca ne change rien :(
Citation:
Envoyé par Sachiel31
L'erreur a changé ou pas ?
Non j'ai toujours la meme erreur :
Code:
2
3
Tu as mis la référence comme je te l'ai proposée ?
Tu peux mettre tout le code stp? LA dernière version ?
Qu'on s'y retrouve un peu. ;)
Merci
Alors, voila mon code à l'état actuel.
destinataire.h :
operateur.cppCode:
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
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Il n'y a pas de ; a la fin du code de la surcharge et tu n'a pas mis :
ostream& operator << (ostream & fluxSortie, const Destinataire &dest);
entre le }; et le #endif de destinataire.h
Moi je préfère la déclaration en friend, mais bon c'est toi qui voit.
En plus des remarques de SnakemaN, il te manque unstd::ostream ;)
Pour le ; c'est moi qui me suis craquée dans le post :mrgreen:
Quand je fais ce que tu me dis SnakemaN (rajouter "std::ostream& operator<< (ostream &os, const Destinataire &dest);" dans destinataire.h
), j'ai 3 nouvelles erreurs :
Code:
2
3
4
5
6
7
8