Surcharge des opérateurs

Résolu
pinkettee Messages postés 36 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 10 février 2013 - 8 mars 2012 à 10:39
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 8 mars 2012 à 12:19
Bonjour les amis, j'ai un petit problème à propos de la surcharge des opérateurs
J'ai deux classes qui sont :

class Cellule{
double note ;
};

class Ligne{
vector<string> matiere;
Cellule celule;};

Pour la surdéfinition de "l'operateur<< " j'ai fait comme suit :

ostream& operator<<(ostream &os, Ligne& ld)
{
os<< ld.matiere<<"matiere"<<ld.cellule<<"cellulee"<<endl;
return os;
}
mais dans l'execution il me donne cette erreur dans cette ligne : os<< ld.matiere<<"matiere"<<ld.cellule<<"cellulee"<<endl;

Ce qu'il m'écrit c'est : no match for 'operator<<' in 'os << ld->Ligne::matiere'

J'ai pas compris l'erreur et que dois je faire ?Pouuriez vous m'aider s'il vous plait ?
Merci d'avance ^^

7 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 mars 2012 à 11:29
os << ld.matiere

Équivaut à:
std::vector<std::string> matiere;
os << matiere


Tu n'as jamais spécifié comment un "std::vector<std::string>" devrait être afficher, d'où ton erreur.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 mars 2012 à 11:20
Bonjour.

Tu poses trop de questions, sans avoir lu les cours que l'on t'a donné.
Lis d'abord tous les tutoriaux que l'on t'a donné, ensuite viens poser des questions. Sinon on n'a pas fini...

Je réponds à ta question, mais c'est la dernière fois (car c'est une réponse que tu pourrais trouver seul, en lisant enfin les cours donnés en lien...).

C'est tout simplement que tu as redéfini l'opérateur pour "Ligne", mais pas pour std::vector<std::string>. Donc il ne sait pas afficher _matiere.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
pinkettee Messages postés 36 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 10 février 2013
8 mars 2012 à 11:27
c'est une fonction amis donc elle peut avoir l'acces au attribut de la classe ligne donc je vois pas ce que vous dite la
et merci de m'avoir répondu
0
pinkettee Messages postés 36 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 10 février 2013
8 mars 2012 à 11:28
Je crois que les forums sont fait pour y poser des questions si on a un problème quelque part...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 mars 2012 à 11:35
Je crois que les forums sont fait pour y poser des questions si on a un problème quelque part...

Oui, tant qu'il n'y a pas d'abus. Je te rappelle que nous sommes bénévoles et qu'on mérite à ce titre un minimum de respect.
Poser des questions parce que tu n'as visiblement pas pris la peine de lire les cours en ligne, c'est un manque de respect. Le forum est réservé aux problèmes spécifiques, qui ne peuvent se résoudre par la lecture d'un cours. Ce sont généralement des problèmes d'algorithmies, des conseils d'architecture logicielle ou des techniques d'optimisation. Des erreurs de syntaxe ou des lacunes de cours n'en font clairement pas partie.

Je t'invite à lire ceci, qui t'éclairera sur comment la comunauté d'entraide est censé fonctionner (si tu prends cette fois la peine de le lire):
http://www.gnurou.org/writing/smartquestionsfr

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
pinkettee Messages postés 36 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 10 février 2013
8 mars 2012 à 12:00
J'ai lu plusieurs cours...et il n'y a pas tout dans le cours c'est en pratiquant qu'on découvrant ^^ et dans la pratique je me suis bloquée c'est pour ca que je demande
"Tu n'as jamais spécifié comment un "std::vector<std::string>" devrait être afficher, d'où ton erreur."

sincèrement non.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 mars 2012 à 12:19
J'ai lu plusieurs cours...et il n'y a pas tout dans le cours c'est en pratiquant qu'on découvrant


Ok, reprenons toutes les questions que tu as posées.

Sur:
http://www.cppfrance.com/forum/sujet-COMMENT-ECRIRE-CONSTRUCTEUR-RECOPIE_1577080.aspx
Euuh mais comment je dois déclarer et definir ce constructeur ? ^^

La réponse à ta question était aisément trouvable ici:
http://www.siteduzero.com/tutoriel-3-11177-les-classes-partie-2-2.html#ss_part_1
ou encore ici.
http://casteyde.christian.free.fr/cpp/cours/online/x3049.html

Sur:
http://www.cppfrance.com/forum/sujet-DECLARATION-CLASSE-CPLUSPLUS_1577183.aspx

Quand je déclare ma classe de cette manière
class Ligne {
public :
vector<string> matiere;
};
il me donne erreur dans la ligne vector<string> matiere;
en m'ecrivant "iso c++ forbids declaration of 'vector' with no type"

Encore une fois la réponse se trouvait ici:
http://www.siteduzero.com/tutoriel-3-473855-les-conteneurs.html
ou encore ici:
http://casteyde.christian.free.fr/cpp/cours/online/x8502.html#AEN8644

Sur:
http://www.cppfrance.com/forum/sujet-SURCHARGE-OPERATEURS_1577319.aspx
Ce qu'il m'écrit c'est : no match for 'operator<<' in 'os << ld->Ligne::matiere'

Réponse ici:
http://www.siteduzero.com/tutoriel-3-11199-la-surcharge-d-operateurs.html

Toutes tes questions pouvaient trouver réponse en lisant un peu plus attentivement les cours. (Un cours ne se lit pas en diagonale, il s'étudie). Il y a tout dans les cours, pour ce qui est de la syntaxe et des bases (ce sur quoi portait toutes tes questions jusqu'à maintenant).
Encore une fois, le forum est réservé aux questions d'ordre algorithmique ou technique, mais surement pas aux questions de cours.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous