IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Héritage et classes abstraites


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut Héritage et classes abstraites
    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

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    C'est comme le bon formage: c'est marqué dessus

    Visiblement, tu a déclaré un destructeur pour ta classe Personne, mais tu ne l'a pas implémenté... Du coup... le compilateur n'en crée pas (il a trouvé la déclaration)... et l'éditeur de lien n'est pas content
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Merci beaucoup

    J'ai simplement rajouté {} après la déclaration et tout est rentré dans l'ordre.
    C'est le message qui m'a un peu dérouté, vTable ne me parlant pas trop.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Héritage de classes abstraites
    Par gladio62 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 11/05/2009, 14h27
  2. [DC] Héritage et classes abstraites
    Par leminipouce dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 08/01/2008, 16h14
  3. pb héritage sur classe abstraite et iterator
    Par black-falco dans le forum C++
    Réponses: 21
    Dernier message: 05/01/2008, 16h38
  4. Problème héritage et classes abstraites
    Par sebzinzin dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2007, 18h24
  5. héritage et classes abstraites
    Par reloadead dans le forum Langage
    Réponses: 5
    Dernier message: 31/01/2007, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo