Bonjour,
J'ai une classe étudiant qui contient des cours dans un vecteur
La classe cours virtuelle pure
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 class Etudiant { public: Etudiant (int noEtudiant, const std::string& nom, const std::string& prenom); int reqnoEtudiant() const; std::string reqNom() const; std::string reqPrenom() const; // nouveaux void ajouterCours (const Cours& nouveauCours); std::string reqReleves() ; ~Etudiant(); private: int m_noClient; std::string m_nom; std::string m_prenom; std::vector<Cours*> m_vCours; };
Classe Math qui hérite de cours
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 class Cours { public: Cours (unsigned int noCours, double note); std::string reqCoursFormate() const; virtual Cours* clone() const=0; private: unsigned int m_noCours; double m_note; };
Dans la classe cours voici le code pour afficher le contenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Math : public Cours { public: Math (unsigned int noCours, double note); std::string reqCoursFormate() const; virtual Cours* clone() const; };
Dans la classe math voici le code pour afficher le contenu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 std::string Cours::reqCoursFormate() const { ostringstream os; os << "Numero : " << reqNoCompte() << endl << "Note : " << reqNote() << endl; return os.str(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 std::string Math::reqCoursFormate() const { ostringstream os; os << "Cours Math" << endl << Cours::reqCompteFormate() << endl; return os.str(); }
Dans mon étudiant, quand j'ajoute un cours
J'essais d'afficher le contenu en bouclant de la facon suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 m_vCours.push_back(nouveauCours.clone());
Si je crée un objet math, c'est toujours la méthode du cours qui est appelé et jamais celle de math.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << m_vCours[i]->reqCoursFormate();
Qqn sait pourquoi ?
Merci de votre aide.
Partager