Bonjour à tous et toutes,
Voila j'ai un problème en C++, je viens de commencer avec ce langage et ça fait 2 jours que je n'arrive plus a avancer. voila la structure de mon "projet" (en très simplifié) :
TroisDWidget.h - La classe mère
Code :
- class TroisDWidget : public QGLWidget
- {
- Q_OBJECT
- public:
- explicit TroisDWidget(int framesPerSecond = 0, QWidget *parent = 0, char *name = 0);
- ~TroisDWidget();
- virtual void initializeGL() = 0;
- virtual void resizeGL(int width, int height) = 0;
- virtual void paintGL() = 0;
- virtual void keyPressEvent( QKeyEvent *keyEvent );
- public slots:
- virtual void timeOutSlot();
- private:
- QTimer *t_Timer;
- };
|
TroisDWidget.cpp - Implémentation
Code :
- TroisDWidget::TroisDWidget(int framesPerSecond, QWidget *parent, char *name) : QGLWidget(parent){
- ....
- }
- void TroisDWidget::timeOutSlot()
- {
- }
- void TroisDWidget::keyPressEvent(QKeyEvent* event) {
- ....
- }
- TroisDWidget::~TroisDWidget(){}
|
RenduTroisD.h - Classe fille
Code :
- class RenduTroisD : public TroisDWidget
- {
- Q_OBJECT
- public:
- explicit RenduTroisD(QWidget *parent = 0);
- void initializeGL();
- void resizeGL(int width, int height);
- void paintGL();
- };
|
RenduTroisD.cpp - Implémentation
Code :
- RenduTroisD::RenduTroisD(QWidget *parent) : TroisDWidget(60, parent, "Rendu 3D" )
- {
- // rien pour le moment
- // l'erreur nous renvoie à ce constructeur
- }
- void RenduTroisD::initializeGL(){....}
- void RenduTroisD::resizeGL(int width, int height){...}
- void RenduTroisD::paintGL(){...}
|
Comme le dit le titre, l'erreur que je récupère est : "Undefined reference to `vatable for RenduTroisD`". Qui me redirige vers la ligne du constructeur : RenduTroisD::RenduTroisD(QWidget *parent) : TroisDWidget(60, parent, "Rendu 3D" ){}
J'ai pu lire et apprendre que cela voulait dire qu'il y a un problème de link au niveau de la table qui s'occupe des fonctions virtuelles. De plus, la plupart des gens sur internet qui ont eu se problème parlent de constructeurs ou destructeurs non valides. J'ai beau ajouter des constructeurs ou destructeurs partout, cela ne change pas grand chose à mon problème.
Quelqu'un pourrait m'aider ? Je ne sais vraiment plus quoi faire.
Merci infiniment.
Votre Soeur