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 :

Lien d'héritage non visible dans la classe fille


Sujet :

C++

  1. #1
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut Lien d'héritage non visible dans la classe fille
    à tous,

    Je sèche sur un problème stupide depuis hier donc je vous en fais part car ça me parait vraiment simple mais je vois pas.

    J'ai 2 classes Sommet et Atome. Atome hérite de Sommet :
    Sommet.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #ifndef SOMMET_H
    #define SOMMET_H
     
    #ifndef OBJECT_H
       #include "Object.h"
    #endif
     
    class Arete;
    class Graphe;
     
    using namespace std;
     
    class Sommet : public Object
    {
       private :
          vector<Arete*> gArete;
          Graphe* gGraphe;
     
       public:
          //...
         virtual void addArete(Arete* arete);
    };
    #endif
    Sommet.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "Sommet.h"
     
    //...
     
    void Sommet::addArete(Arete* arete)
    {
       this->gArete.push_back(arete);
    }
     
    //...
    Atome.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #ifndef ATOME_H
    #define ATOME_H
     
    class Liaison;
    class Molecule;
     
    #ifndef RESEAU_H
       #include "Sommet.h"
       #include "Arete.h"
    #endif
     
    using namespace std;
     
    class Atome : public Sommet
    {
       public:
          //...
          virtual void addArete(Liaison* l);
          virtual void addArete(Arete* a);
    };
     
    #endif
    Atome.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include "Atome.h"
     
    //...
     
    void Atome::addArete(Liaison* l)
    {
       Sommet::addArete(l);
    }
     
    void Atome::addArete(Arete* a)
    {
       try
       {
          this->addArete(dynamic_cast<Liaison*>(a));
       }
       catch(...)
       {
          cout << "Atome : addGArete() -> Erreur tentative de création de chimère = " << a->getName() << "(" << a->getClass() << ")"<< endl;
       }
    }
    C'est la fonction addArete qui me pose un problème. Dans Atome lorsque j'appelle le addArete de Sommet j'ai cette erreur :
    Atome.cpp: In member function «virtual void Atome::addArete(Liaison*)":
    Atome.cpp:14: erreur: no matching function for call to «Atome::addArete(Liaison*&)"
    Sommet.h:23: note: candidats sont: virtual void Sommet::addArete(Arete*)

    Atome.cpp: In member function «virtual void Atome::addArete(Arete*)":
    Atome.cpp:21: erreur: cannot dynamic_cast «a" (of type «class Arete*") to type «struct Liaison*" (target is not pointer or reference to complete type)
    Donc 2 soucis :
    • le premier : il ne fait pas la liaison entre le addArete de la classe Sommet et celui de la classe Atome.
    • le second : mon cast est foireux (à cause de ça je suppose).
    Quelqu'un voit-il pourquoi, dans la classe Atome, le compilo ne fait pas le lien avec la classe Sommet ??

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Citation Envoyé par trotters213 Voir le message
    Quelqu'un voit-il pourquoi, dans la classe Atome, le compilo ne fait pas le lien avec la classe Sommet ??
    Parce qu'il manque un #include "Liaison.h" dans Atome.cpp ?

    MAT.

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    J'ai pas eu fini de poster le problème qu'on l'a résolu finalement avec un collègue.

    C'est ça de coder pendant 5 heures d'affilé après on voit plus rien

    Merci pour ton aide Mat.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/11/2009, 00h20
  2. Classes non visibles dans Default.aspx.cs.
    Par laurent_diep dans le forum C#
    Réponses: 4
    Dernier message: 09/08/2009, 22h24
  3. Redirection URL Non visible dans la barre d'adresse
    Par domileg dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 09h02
  4. Composants non visible dans certaines applications
    Par chtom dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 22/03/2006, 17h33
  5. Réponses: 2
    Dernier message: 12/01/2006, 14h54

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