Lien d'héritage non visible dans la classe fille
:salut: à 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:
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:
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:
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:
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 :
Citation:
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.