Bonjour,

J'ai une classe étudiant qui contient des cours dans un vecteur

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;
};
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
 
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;
 
};
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
 
class Math : public Cours
{
public:
	Math (unsigned int noCours,
	double note);
 
	std::string reqCoursFormate() const;
 
	virtual Cours* clone() const;
};
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
 
std::string Cours::reqCoursFormate() const
{
	ostringstream os;
		os << "Numero                   : " << reqNoCompte() << endl
		   << "Note                     : " << reqNote() << endl;
		return os.str();
}
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 Math::reqCoursFormate() const
{
	ostringstream os;
			os << "Cours Math" << endl
				<< Cours::reqCompteFormate() << endl;
			return os.str();
}

Dans mon étudiant, quand j'ajoute un cours
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
m_vCours.push_back(nouveauCours.clone());
J'essais d'afficher le contenu en bouclant de la facon suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cout << m_vCours[i]->reqCoursFormate();
Si je crée un objet math, c'est toujours la méthode du cours qui est appelé et jamais celle de math.

Qqn sait pourquoi ?

Merci de votre aide.