[POO] Problème dans un exercice sur l'héritage
Bonjour,
Dans le cadre scolaire je recontre des difficultées dans un exercice d'héritage.
En gros, voila le sujet:
- On a une classe Fichier qui est un nom, et une méthode presenteToi(int n) qui affiche le nom avec n tabulation
- On a une classe Repertoire qui est un Fichier, et qui en plus à un tableau de pointeur vers des Fichier. Repertoire à une méthode presenteToi(int n) qui affiche son nom, puis avec une tabulation affiche la liste des fichiers qu'il contient.
Par exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Repertoire Rep1("Rep1");
Repertoire Rep2("Rep2");
Fichier tutu("tutu");
Fichier tata("tata");
Fichier tete("tete");
Rep1.ajouterFichier(&tutu); // Ajoute un pointeur de fichier Fichier* au Repertoire
Rep1.ajouterFichier(&Rep2);
Rep2.ajouterFichier(&tata);
Rep2.ajouterFichier(&tete);
Rep1.presenteToi(); |
Devrait afficher:
Code:
1 2 3 4 5
| Rep1
tutu
Rep2
tata
tete |
Voila mes deux méthodes presenteToi(int n):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| void Fichier :: presenteToi(int n) {
int i;
for(i=0; i<n; i++)
cout << '\t';
cout << this->sonNom;
}
void Repertoire :: presenteToi(int n) {
int i;
this->Fichier::presenteToi(n);
// Affichage de tous les sous fichiers
i=0;
while( i<NB_FICHIER_MAX && this->sesEntrees[i] != NULL ) {
cout << endl;
this->sesEntrees[i]->presenteToi(n+1); // LIGNE POSANT LE PROBLEME
i++;
}
} |
Cela ne m'affiche que:
Malgré mes attentes, pas d'appel récursif !
Je pense que cela vient du fait que j'ai des pointeurs vers des Fichier et donc quand j'appelle:
this->sesEntrees[ i ]->presenteToi(n+1);
C'est la méthode de Fichier qui est appelée, même pour le Rep2.
Comment faire en sorte que cette instruction appelle la bonne méthode, selon que l'on ai un Fichier ou un Repertoire ?
Merci de votre aide !