Bonsoir, je fais du C++ depuis peu et je rencontre un problème

Voici un morceau de ma classe 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;
		}
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
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;
		}
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
 
template <class T> 
	class liste{
 
	private:
		T val;
		liste* reste;
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
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;
	}
};
et enfin le main

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;
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 ?