Bonjour,
j'ai un peu de mal avec les classe abstraite, et je remercie d'avance celui qui prendra un peu de temps pour me répondre.
Voilà mon problème, j'ai une classe abstraite Element toute simple:
Element.h
et j'ai 2 classes qui dérive de cette classe abstraite, Collection et Literal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Element { public : virtual void affiche() = 0; };
Collection.h
Literal.h
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 #include "Literal.h" #include "Element.h" #include "Maillon.h" class Collection:public Element { private: Maillon* tete; Maillon* queue; public: Collection(); void ajout(Element* E); bool vide(); void affiche(); Maillon* getTete(); Maillon* getQueue(); };
Et puis Maillon.h si ça peux vous aidez:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "Element.h" class Literal:public Element { private: char nom; bool polarite; public: Literal(char N, bool P); void affiche(); char getNom(); bool getPolarite(); };
Et ensuite dans ma classe principale je veux faire ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Literal.h" class Maillon { private: Element* info; Maillon* suiv; public: Maillon(Element* L); Maillon* getSuiv(); void setSuiv(Maillon* M); void affiche(); Element* getElement(); };
listeClause est un objet de Collection.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Maillon* clauseCour = listeClause->getTete(); Literal* litCour = clauseCour->getElement()->getTete();
Ce code ne fonctionne pas, le message d'erreur est que getTete() n'est pas une méthode de la classe élement.
Je ne sais pas comment faire, en fait j'ai une collection où chaque maillon est une autre collection (c'est pour ça que Collection dérive d'élément), et ces "sous-collections" sont des collections de litéral. Il faut que je parcours tout les litéraux.
Je sais pas si c'est très clair, je peux vous mettre les .cpp si vous voulez aussi.
Partager