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:
Devrait afficher:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
Voila mes deux méthodes presenteToi(int n):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Rep1 tutu Rep2 tata tete
Cela ne m'affiche que:
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 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++; } }
Malgré mes attentes, pas d'appel récursif !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Rep1 tutu Rep2
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 !
Partager