Héritage (pattern Composite)
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 :
Code:
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();
}; |
La fonction héritée du composite :
Code:
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();
}; |
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.
Cependant, il me renvoit toujours un mauvais chemin (qui ressemble plus au _root de RepTraining qu'aux répertoires qu'il contient...
Code:
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
.....
} |
Je n'ai pas encore compris toutes les subtilités de l'héritage, et je ne vois pas du tout mon erreur...
Merci d'avance :)