Bonjour,
J'ai utilisé le design pattern composite pour me créer des classes qui parcourt des fichiers et répertoires. Cependant, dans une fonction héritée du composite, je n'arrive pas à accéder à un attribut. Voici le schéma :
La fonction héritée du composite :
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 class Composant { protected: const char* _root; /**< Le path ABSOLU du composant */ public: virtual const char* getPath() = 0; virtual void searchContent() = 0; }; class Repertoire: public Composant { //Le composite protected: vector<Composant*> _contient; /**< Un tableau des composants */ public: Repertoire(const char* root); virtual ~Repertoire(); virtual const char* getPath(); virtual void searchContent(); };
Dans ma fonction getNameSubdirectory, je veux accéder au n-ième élément du vector composite, récupérer son chemin (_root) et après modifications, le renvoyer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class RepTraining: public Repertoire { //hérite du composite public: RepTraining(const char* root); virtual ~RepTraining(); const char* getNameSubdirectory(int index); virtual void searchContent(); virtual const char* getPath(); };
Cependant, il me renvoit toujours un mauvais chemin (qui ressemble plus au _root de RepTraining qu'aux répertoires qu'il contient...
Je n'ai pas encore compris toutes les subtilités de l'héritage, et je ne vois pas du tout mon erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 const char* RepTraining::getNameSubdirectory(int index) { Repertoire* test = static_cast<Repertoire*>(_contient.at(index)); std::string truncateName = test->getPath(); //PAS BON ..... }
Merci d'avance![]()
Partager