#1 Le 19/06/2006, à 22:30
- Link31
[Résolu] "Référence indéfinie vers «vtable for..."
Salut,
Est-ce que quelqu'un pourrait me traduire ceci en quelque chose de compréhensible par un être humain ?
preview_widget.o: dans la fonction « basewidget »:
../include/base_widget.h:49: référence indéfinie vers « vtable for basewidget»
preview_widget.o: dans la fonction « ~basewidget »:
../include/base_widget.h:51: référence indéfinie vers « vtable for basewidget»
preview_widget.o:(.gnu.linkonce.r._ZTI13previewwidget+0x8): référence indéfinie vers « typeinfo for basewidget»
Voici le code :
// ====== base_widget.h ============
class basewidget
{
private:
// ...
public:
unsigned int left;
unsigned int top;
unsigned int width;
unsigned int height;
basewidget(unsigned int l, unsigned int t, unsigned int w, unsigned int h)
{
left = l;
top = t;
width = w;
height = h;
};
virtual ~basewidget() { };
// ...
};
// ====== preview_widget.h ============
class previewwidget : public basewidget
{
private:
// ...
protected:
// ...
public:
previewwidget(unsigned int l, unsigned int t, unsigned int w, unsigned int h);
~previewwidget();
// ...
};
// ====== preview_widget.cpp ============
previewwidget::previewwidget(unsigned int l, unsigned int t, unsigned int w, unsigned int h)
: basewidget(l, t, w, h)
{
// ...
}
previewwidget::~previewwidget()
{
// ...
}
Merci d'avance
Dernière modification par Link31 (Le 20/08/2008, à 20:13)
Hors ligne
#2 Le 19/06/2006, à 22:35
- gene69
Re : [Résolu] "Référence indéfinie vers «vtable for..."
mode naïf
preview_widget.o: dans la fonction « basewidget »:
./include/base_widget.h:49: référence indéfinie vers « vtable for basewidget»
lors du linkage de preview_widget.o tu appelles à la ligne 49 de un truc qui s'appelle: vtable for basewidget dans la fonction basewidget
ça ressemble à un problème d'héritage (virtual????). Mais je préfère ne rien dire de plus je suis pas tres fort en... C++ ?
Dernière modification par gene69 (Le 19/06/2006, à 22:38)
Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion
Hors ligne
#3 Le 19/06/2006, à 22:49
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Merci de ta réponse, mais je n'ai nulle part déclaré ou tenté d'utiliser une "vtable for basewidget". D'ailleurs le C++ ne permet pas de noms avec des espaces... ça doit être un truc généré par le compilateur.
Je connais la plupart des messages d'erreur indiqués dans ta page mais celui là m'est complètement inconnu
Hors ligne
#4 Le 20/06/2006, à 01:42
- foobar2000
Re : [Résolu] "Référence indéfinie vers «vtable for..."
T'as pas utilise de template quelque part dans une methode virtual ? avec le code que tu nous donnes j'ai aucun probleme a la compilation
Dernière modification par foobar2000 (Le 20/06/2006, à 01:44)
Aucun rapport avec le logiciel du même nom.
Hors ligne
#5 Le 20/06/2006, à 03:56
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Non, la seule méthode virtuelle est le destructeur de basewidget, et il est vide.
Au sujet des templates, j'utilise des vector à plusieurs endroits mais même en les commentant, ça ne passe toujours pas
Dernière modification par Link31 (Le 20/06/2006, à 03:57)
Hors ligne
#6 Le 20/06/2006, à 08:45
- trucutu
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Cela peut être un problème d'évênement.
J'ai déjà eu ce genre de message d'erreur, qui semble apparaître quand le programme "n'est pas entièrement construit".
Tu as déclaré :
- une class wxApp ?
- DELCARE_APP et tous ça ?
- et un EVENT_TABLE ?
C'est dans le dernier point que je situerais ton erreur
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#7 Le 20/06/2006, à 16:03
- Cathou
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Link, ça a l'air d'être un problème de link plutôt que de compil, non?
Ta classe base_widget dérive-t-elle elle-même d'une classe abstraite (virtuelle pure)?
Cet extrait de FAQ semble te concerner.
#8 Le 21/06/2006, à 16:08
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
@trucutu : wxApp ?
Si tu parles de wxWidgets, je ne l'utilise pas, en fait il s'agit d'une implémentation de widgets perso, destinés à fonctionner avec SDL et OpenGL.
Je n'ai pas mis tout le code (beaucoup trop long) mais j'ai posté la quasi-totalité des fichiers qui contiennent les classes posant problème.
@Cathou : en effet, l'erreur se produit au moment du linkage :
preview_widget.o:(.gnu.linkonce.r._ZTI13previewwidget+0x8)
La compilation en elle même se déroule très bien.
Ma classe base_widget ne dérive de rien, à moins que "rien" soit considéré comme une classe virtuelle pure ?
J'ai regardé ton lien, et ça semble confirmer un doute que j'avais : je me traîne encore avec un vieux gcc (3.3.6), peut-être que je devrais le changer ?
Hors ligne
#9 Le 19/08/2008, à 22:54
- Daoff
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Peut-etre un peu tard pour répondre, mais au cas où des gens passeraient par là...
J'ai eu le même problème et l'ai résolu simplement en changeant
virtual ~Classe();
en
virtual ~Classe() {}
#10 Le 20/08/2008, à 00:20
- nicolas66
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Bah ça signifie tout simplement qu'il ne trouve pas une méthode virtuelle au moment du linkage (vtable = virtual table). Essayes de rendre le constructeur virtuel dans la classe fille `previewwidget'.
EDIT : ouch gcc 3, je me rappelle jamais si c'est avant ou après J.C ^^. Bref, un petit `sudo-apt-get install gcc' pour dépoussierer tout ça ferait pas de mal
EDIT2 : mai 2005, donc c'est bien après J.C ^^
Dernière modification par nicolas66 (Le 20/08/2008, à 06:37)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#11 Le 20/08/2008, à 07:50
- valAa
Re : [Résolu] "Référence indéfinie vers «vtable for..."
en même temps, le topic date de juin 2006 ^^
Hors ligne
#12 Le 20/08/2008, à 18:40
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Mince, j'aurais dû penser à mettre la solution...
Ça venait effectivement du fait que toutes les méthodes virtuelles (non pures) n'étaient pas définies.
Ça fait bizarre de voir ce genre de question exhumée des profondeurs, vu que j'ai nettement progressé en C++ depuis
Hors ligne
#13 Le 20/08/2008, à 19:37
- Totor
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Et un petit "[Résolu]" ?
-- Lucid Lynx --
Hors ligne
#14 Le 20/08/2008, à 20:15
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Même si je n'ai jamais été convaincu de l'intérêt du "[Résolu]", je le mets quand même pour éviter du travail inutile aux modérateurs...
Et aussi parce que c'est une expérience à faire
J'ai pris l'habitude de toujours chercher les réponses moi-même sur Google (aussi bien pour mes questions que pour certaines posées par d'autres), et c'est pour ça que je ne pose quasiment plus jamais de questions sur les forums...
Dernière modification par Link31 (Le 20/08/2008, à 20:16)
Hors ligne
#15 Le 20/08/2008, à 20:21
- nicolas66
Re : [Résolu] "Référence indéfinie vers «vtable for..."
J'ai pris l'habitude de toujours chercher les réponses moi-même sur Google (aussi bien pour mes questions que pour certaines posées par d'autres), et c'est pour ça que je ne pose quasiment plus jamais de questions sur les forums...
Bon état d'esprit, continue
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#16 Le 20/08/2008, à 20:35
- Link31
Re : [Résolu] "Référence indéfinie vers «vtable for..."
En fait, j'ai remarqué qu'avec le temps on peut développer une véritable maîtrise de Google. Au bout d'un moment on apprend à bien choisir ses mots clés et on trouve des résultats de plus en plus rapidement.
L'utilisation avancée de Google devrait être enseignée au collège
Hors ligne
#17 Le 21/08/2008, à 09:44
- Totor
Re : [Résolu] "Référence indéfinie vers «vtable for..."
J'ai pris l'habitude de toujours chercher les réponses moi-même sur Google (aussi bien pour mes questions que pour certaines posées par d'autres), et c'est pour ça que je ne pose quasiment plus jamais de questions sur les forums...
[...]
En fait, j'ai remarqué qu'avec le temps on peut développer une véritable maîtrise de Google. Au bout d'un moment on apprend à bien choisir ses mots clés et on trouve des résultats de plus en plus rapidement.
L'utilisation avancée de Google devrait être enseignée au collège
Je procède aussi de la même façon car j'ai toujours en mémoire une phrase d'un prof (il y a 10 ans de cela ) : "En cherchant bien, j'ai toujours tout trouvé sur le net"
Mais aussi car j'ai toujours été autonome et autodidacte dans sphère de l'informatique.
Cela dit, je suis toujours aussi nul pour rechercher sur google et je mets parfois pas mal de temps pour trouver ce que je cherche Je ne maitrise pas vraiment le "bien"
Si t'as le temps de rédiger ce guide "Utilisation avancée de Google", je suis preneur
-- Lucid Lynx --
Hors ligne
#18 Le 21/08/2008, à 16:13
- nicolas66
Re : [Résolu] "Référence indéfinie vers «vtable for..."
Ya pas de mystère pour chercher un truc sous Google, faut essayer d'utiliser une liste de mots-clés courte et la plus pertinente possible.
Google permet d'affiner sa recherche avec ce genre de paramètres :
* `mesh filetype:pdf' -> rechercher tous les docs pdf parlent de mesh
* `mesh site:.free.fr' -> rechercher tous les sites free qui parlent de mesh
* `spell:gougle' -> contrôler l'orthographe d'une requête
A noter la présence de quelques moteurs de recherches spécifiques :
* Google linux -> recherche sur linux
* Google Scholar -> recherche des articles scientifiques
Google fait aussi calculatrice, donne les titres en bourse, donne la météo, etc.
Dernière modification par nicolas66 (Le 21/08/2008, à 16:15)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne