Constructeur par défaut pour une classe fille
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 :
Code:
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 |
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.
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 :
Code:
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 |
Même problème.
J'ai essayé de faire un Sac.cpp, qui est de cette forme :
Code:
1 2 3 4 5
|
#include "Sac.h"
Sac::Sac() : Liste<Objet>()
{} |
Et j'obtiens une autre message d'erreur de linkage : " [Linker error] undefined reference to `vtable for Sac' ".
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.