Bonjour à tous,

Je bloque sur un TP qui porte sur l'héritage et les classes virtuelles.
J'ai une classe personne, qui est une classe virtuelle pure.
Deux classes, étudiant et enseignant, qui héritent de manière public de personne.
Enfin, une classe bddPersonne qui hérite de list<*personne> de manière privée (list étant le TDA de la STL).
bddPersonne est donc en quelque sorte une liste optimisée pour la gestion des personnes.
Pour faire mon test, voici ce que contient pour l'instant le main.cpp du projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "personne.hpp"
#include "etudiant.hpp"
#include "enseignant.hpp"
#include "bddPersonne.hpp"
 
int main()
{
	bddPersonne liste1 ;
	etudiant *moi = new etudiant("MACHIN", "Bidule", "GI", "I2RV") ;
 
	liste1.ajoutPersonne(moi) ;
}
J'obtiens l'erreur suivante à la compilation (un problème de reference non définie dans vTable) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Switching to target: default
Linking console executable: E:\Cours\UTBM\LO43\TP3\Inheritance.exe
.objs\main.o: In function `ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP8personneEEC2ERKS5_':
C:/Program Files/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/new:(.text$_ZN8etudiantC1ESsSsSsSs[etudiant::etudiant(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0x5a): undefined reference to `vtable for etudiant'
C:/Program Files/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/new:(.text$_ZN8etudiantC1ESsSsSsSs[etudiant::etudiant(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0xde): undefined reference to `personne::~personne()'
C:/Program Files/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/new:(.text$_ZN8personneC2ERKSsS1_[personne::personne(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x3a): undefined reference to `vtable for personne'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
Quelqu'un a-t-il une idée du problème ? Merci d'avance .

Mathieu