Bonjour à tous,
Je suis bloqué depuis une semaine sur ce programme et j’espère que vous allez pouvoir m'aider.
Je doit réaliser un graphe générique en c++.
Voila comment je fait les choses.
Pour le graphe générique en lui même j'ai trois templates GGraphe, GSommet, GArete déclaré de la manière suivante
C'est la première fois que je fait de la généricité en c++ alors déjà est ce que la déclaration des classes ce fait bien comme ça avec des templates ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template <typename TGraphe, typename USommet, typename VArete > class GGraphe{
Ensuite est ce que dans l'implémentation chaque méthodes doit avoir écrit a nouveau template et les trois types génériques que je vais utiliser de la manière suivante ?
Maintenant la partie où je bloque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template <typename TGraphe, typename USommet, typename VArete> GGraphe<TGraphe, USommet, VArete>::GGraphe() { }
On suppose maintenant que un utilisateur souhaite créer des classes qui héritent du graphe générique. Donc l'utilisateur crée trois classes (par exemple) Molecule, Atom, Arete. Pour chaque classes il fait hérité la classe générique correspondante. Pour Molecule : GGraphe.
Je déclare la classe comme ca :
C'est ici que j'ai un problème. Quand je compile il me dit que "Molecule" n'est pas définit, en effet puisqu'il est en train de compiler la classe Molecule donc elle n'existe pas encore. J'ai alors essayer de mettre ca juste avant de déclarer la classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 class Molecule : virtual public GGraphe <Molecule, Atom, Liaison>{
Et alors il le compilateur me dit qu'il ne connait pas les méthodes qui sont dans la classe Molecule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2class Molecule;
Voila
Est ce que vous pouvez m'apporter votre aide ?
Merci d'avance.
Partager