Bonjour à tous,
Dans le cadre d'un projet pour mon école, je dois programmer plusieurs classes mettant en œuvre de l'héritage.
Le projet modélise un robot qui possède un sac.
Ce sac est une liste d'objets (les objets étant une autre classe de mon projet). Je détaille pour se mettre dans le contexte, mais les classes n'ont pas vraiment d'importance pour la résolution de mon problème.
Donc, j'ai réalisé une classe Sac, mais elle réalise exactement la même chose qu'une liste, et donc je la fait hériter de liste.
Voici le code de la classe Sac :
Bon, je vous l'accorde, cela ne sert strictement à rien, et j'aurais pu donner une liste d'objets directement à mon robot plutôt que de faire une classe sac.
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 #ifndef SAC_H #define SAC_H #include "../Outils/Liste/Liste.h" #include "../Objets/Objet.h" class Sac : public Liste<Objet> { private : public : Sac(); virtual ~Sac(); }; #endif
Mais je dirais que c'est mon problème, que j'en ai déjà discuter avec l'enseignant qui voulait une classe Sac. Donc, je la fais pour la faire, et normalement cela ne devrait pas poser de problème.
Seulement, à la compilation, je me retrouve avec le problème d'édition de lien suivant : " [Linker error] undefined reference to `Sac::Sac()' "
Je n'ai pas fait, dans un premier temps de fichier Sac.cpp car pour moi, le constructeur doit simplement appeler le constructeur de la classe mère et rien d'autre.
J'ai essayé ça :
Même problème.
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 #ifndef SAC_H #define SAC_H #include "../Outils/Liste/Liste.h" #include "../Objets/Objet.h" class Sac : public Liste<Objet> { private : public : Sac() : Liste<Objet> {} virtual ~Sac(); }; #endif
J'ai essayé de faire un Sac.cpp, qui est de cette forme :
Et j'obtiens une autre message d'erreur de linkage : " [Linker error] undefined reference to `vtable for Sac' ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include "Sac.h" Sac::Sac() : Liste<Objet>() {}
Bref, je n'arrive pas à faire quelque chose qui me parait vraiment simple.
Donc comment faire pour implémenter facilement un constructeur par défaut qui ne fait rien d'autre qu'appeler le constructeur par défaut de la classe mère ?
S'il vous plait, je ne souhaite pas revenir sur l'utilité où non d'un tel procédé, c'est purement et simplement pour ma culture personnelle et je me doute bien qu'en ne définissant pas la classe Sac j'aurais moins de problèmes !
Merci d'avance.
Partager