à 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.hSommet.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
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); }; #endifAtome.h
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.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
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); }; #endifC'est la fonction addArete qui me pose un problème. Dans Atome lorsque j'appelle le addArete de Sommet j'ai cette erreur :
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; } }
Donc 2 soucis :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)
Quelqu'un voit-il pourquoi, dans la classe Atome, le compilo ne fait pas le lien avec la classe Sommet ??
- 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).
Merci d'avance pour votre aide.
Partager