Passage d'un objet générique en paramètre
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:
Code:
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
} |
Je n'obtiens pas d'erreur de syntaxe, par contre ça plante quand je compile:
Code:
1 2
|
GenericAretes.h:55:21: Cannot initialize a parameter of type 'GenericLiens *' with an rvalue of type 'GenericAretes<GenericReseaux, GenericNoeuds, GenericLiens> *' |
(GenericLiens hérite de GenericAretes et concrétise cette dernière).
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:
Code:
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);
} |
et "aret_incidents est un vector déclaré ainsi:
Code:
1 2
|
vector<A*> aret_incidents; |
Informations supplémentaires: je compile avec l'IDE XCode (qui prend en charge la dernière version du compilateur g++) de MAC OS X.
Voilà si vous pourriez m'aider ça serait vraiment super. Merci d'avance.