Bonjour je suis sous visual c++ 2005, et je dois dire que je suis un peu perdu,
parce que le meme projet compiler avec mingw gnu fonctionne, et pas avec visual c++.
Sous visual c++ après avoir compiler j'affiche la liste des erreurs que voici :
et voici ce qu'il y a à ces lignes :Erreur 1 error C2679: '<<' binaire*: aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const std::string' (ou il n'existe pas de conversion acceptable) c:\users\...\document\visual studio 2005\projects\liste\liste\eleve.cpp 35
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void Eleve::afficher(ostream &o) const{ o << nom << " " << prenom << " " << age << " " << filiaire; }je mets tout le code au cas ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void Enseignant::afficher(ostream & o) const{ o << nom << " " << prenom << " " << age << " " << enseigne_matiere; }
personne.h
personne.cpp
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
25
26
27
28
29
30
31
32
33
34 #ifndef PERSONNE_H_ #define PERSONNE_H_ #include <string.h> #include <iostream> using namespace std; class Personne { protected: string nom; string prenom; int age; public: Personne(const string &nom, const string &prenom, const int &age); Personne(const Personne &nom); int getAge(); string getNom(); string getPrenom(); void setAge(const int &age); void setNom(const string &nom); void setPrenom(const string &prenom); virtual ~Personne(); virtual void afficher(ostream &o = cout)const = 0; }; ostream &operator<<(ostream &out, const Personne &p); #endif /* PERSONNE_H_ */
eleve.h
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include "Personne.h" Personne::Personne(const string &nom, const string &prenom, const int &age) { this->age = age; this->nom = nom; this->prenom = prenom; } Personne::Personne(const Personne &nom){ this->age = nom.age; this->nom = nom.nom; this->prenom = nom.prenom; } Personne::~Personne() { } int Personne::getAge() { return this->age; } string Personne::getNom(){ return this->nom; } string Personne::getPrenom(){ return this->prenom; } void Personne::setAge(const int &age){ this->age = age; } void Personne::setNom(const string &nom){ this->nom = nom; } void Personne::setPrenom(const string &prenom){ this->prenom = prenom; } ostream &operator<<(ostream &out, const Personne &p) { p.afficher(out); return out; }
eleve.cpp
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 #ifndef ELEVE_H_ #define ELEVE_H_ #include "Personne.h" class Eleve : public Personne { private : string filiaire; public: Eleve(const string &nom, const string &prenom, const int &age, const string &filiaire); Eleve(const Eleve &e); string getFiliaire()const; void setFiliaire(const string &filiere); virtual ~Eleve(); virtual void afficher(ostream &os=cout)const; }; #endif /* ELEVE_H_ */
Voila j'ai cherché sur le net mais je ne trouve pas la solution au problème de l'opérateur << qui m'empêche d'afficher l'objet via le cout (si j'enlève tout ce qui est en rapport avec cette surcharge ca fonctionne mais ce n'est pas mon but) voila avez vous des idées sur ce problème qui m'est épineux ?
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
25
26
27
28
29 #include "Eleve.h" Eleve::Eleve(const string & nom, const string & prenom, const int & age, const string & filiaire) : Personne(nom, prenom, age) { this->filiaire = filiaire; } Eleve::~Eleve() { } Eleve::Eleve(const Eleve & e) : Personne(e) { this->filiaire = e.filiaire; } void Eleve::setFiliaire(const string & filiere) { this->filiaire = filiere; } string Eleve::getFiliaire() const { return this->filiaire; } void Eleve::afficher(ostream &o) const{ o << nom << " " << prenom << " " << age << " " << filiaire; }
EDIT : j'ai trouvé d'où vient le problème et je trouve ca surprennant, le problème viens de la classe Personne
ou je faisc'est
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include<string.h>, j'aurais pas pensé qu'il me ferait des misères pour ca puisque je peux utiliser le type string sans problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include<string>
Partager