Comme il est conseillé dans la FAQ de développez, j'ai déclaré mes .h et mes .cpp dans un seul fichier (ce qui m'a permis de résoudre pas mal de problèmes ). Mais maintenant il me reste un problème que je n'arrive pas à résoudre. C'est le passage d'un objet générique en paramètre d'une de mes fonctions (je le fait dans plusieurs de mes fonctions).
Voici ce que je fait:
Je n'obtiens pas d'erreur de syntaxe, par contre ça plante quand je compile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 template <class G,class S,class A> GenericAretes<G,S,A>::GenericAretes(G* p_arete_dans,S* p_somm1,S* p_somm2){ num++; stringstream s; s << "A" << num; nom_arete=s.str(); arete_dans=p_arete_dans; somm1=p_somm1; somm2=p_somm2; somm1->setSommet_dans(p_arete_dans); somm2->setSommet_dans(p_arete_dans); somm1->addArete(this);//erreur de compile ici }
(GenericLiens hérite de GenericAretes et concrétise cette dernière).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GenericAretes.h:55:21: Cannot initialize a parameter of type 'GenericLiens *' with an rvalue of type 'GenericAretes<GenericReseaux, GenericNoeuds, GenericLiens> *'
J'ai essayé de trouver des réponses (passer par des cast et tout rien à faire) un peu partout mais impossible les rapprocher de mon problème.
Voici ma fonction addArete:
et "aret_incidents est un vector déclaré ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <class G,class S,class A> void GenericSommets<G,S,A>::addArete(A* p_arete){ aret_incidents.push_back(p_arete); }
Informations supplémentaires: je compile avec l'IDE XCode (qui prend en charge la dernière version du compilateur g++) de MAC OS X.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vector<A*> aret_incidents;
Voilà si vous pourriez m'aider ça serait vraiment super. Merci d'avance.
Partager