Bonsoir, je fais du C++ depuis peu et je rencontre un problème
Voici un morceau de ma classe personne
avec deux classes (étudiant et professeur) qui hérite de personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class personne { protected: string nom ; string prenom ; public: personne(string _nom, string _prenom): nom(_nom), prenom(_prenom){}; virtual void affiche(){ cout << "mon nom est " << this->getNom() << " et mon prenom " << this->getPrenom() << endl; }
a côté de ça voici mon Template pour créer des Listes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class etudiant : public personne { private : // donnees specifiques a etudiant string branche; string filiere; public: etudiant(string _nom, string _prenom, string _branche, string _filiere): personne(_nom, _prenom), branche(_branche), filiere(_filiere){}; void affiche(){ personne::affiche(); cout << "je suis en branche " << this->getBranche() <<" et ma filiere " << this->getFiliere() << endl; }
que j'utilise pour déclarer une "bdd"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 template <class T> class liste{ private: T val; liste* reste;et enfin le main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class bddPersonnes : public liste<personne> { public: friend ostream& operator<< (ostream& o, liste<personne>& l){ for(int i=0; i<l.longueur(); ++i){ l[i].affiche() ; } return o; } };
Le problème se pose enfin, j'ajoute des étudiants dans ma liste bdd, sauf qu'à ce moment la lorsque je fais le "cout << bdd" c'est la méthode affiche() de la classe personne qui est appelée et non pas celle d'étudiant, mais je ne peux pas changer ma liste de personne en liste d'étudiant puisque je voudrais qu'elle contienne à la fois des professeurs et des étudiants ? Comment puis-je faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int main(int argc, char *argv) { etudiant p1("NICOLE", "Antoine", "blabla", "toto"); etudiant p2("TRAPU", "Jean-Phillipe", "titi", "tutu"); bddPersonnes bdd; bdd.inserer(0, p1); bdd.inserer(0, p2); cout << bdd << endl;
Partager