Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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++ ?


est ce que ça t'aide?

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 hmm

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 roll

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 sad

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 smile
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 wink

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]" ?
tongue


-- 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 tongue
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..."

Link31 a écrit :

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 smile


"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 wink

Hors ligne

#17 Le 21/08/2008, à 09:44

Totor

Re : [Résolu] "Référence indéfinie vers «vtable for..."

Link31 a écrit :

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 wink

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 yikes) : "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 wink Je ne maitrise pas vraiment le "bien" hmm

Si t'as le temps de rédiger ce guide "Utilisation avancée de Google", je suis preneur lol


-- 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