[C++] double inclusion de fichiers...

carkiasis Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
Zempachi Messages postés 7472 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous,

j'ai un petit probleme en C++ concernant une double inclusion.
J'ai deux classes qui ont besoins chacune de l'autre.

Voici le .hpp des deux classes :

classe "maillon" :

#ifndef MAILLON_HPP_
#define MAILLON_HPP_
#include "arbrePhylo.hpp"
class maillon {

	protected : 
		int score;
	
	public : 
		/** Constructeur par defaut */
		maillon();
		/** Destructeur par defaut */
		~maillon();

};
#endif /* MAILLON_HPP_ */


classe arbrePhylo :


#ifndef ARBRE_PHYLO_HPP_
#define ARBRE_PHYLO_HPP_

#include "maillon.hpp"

class arbrePhylo {

	protected : 
		/** Racine de l'arbre phylogenique */
		maillon * racine;

	public : 
		/** Constructeur par defaut */
		arbrePhylo();
		/** Destructeur */
		~arbrePhylo();
};
#endif /* ARBRE_PHYLO_HPP_ */





Et j'obtiens cette erreur au moment de la compilation :

arbrePhylo.hpp:14: erreur: ISO C++ forbids declaration of «maillon» with no type
arbrePhylo.hpp:14: erreur: expected «;» before «*» token


Voila, je suis bien embetté...
Je sais que le probleme vient de la double inclusion mais il me semble deja avoir fait ca auparavant sans pour autant rencontrer ce genre de problème...

Merci bien de votre attention
A+
A voir également:

3 réponses

Zempachi Messages postés 7472 Date d'inscription   Statut Contributeur Dernière intervention   906
 
tentes un "class maillon;"
apres le " #include "maillon.hpp" " dans le hpp de la classe arbrePhylo.
3
carkiasis Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   28
 
Ca marche c'est cool !!

Ca fait depuis je ne sais combien de temps que je cherchais la solution...

Milles mercis !!!
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est moche aussi comme technique.
J'en est une alternative à te proposer :
#ifndef MAILLON_HPP_
#define MAILLON_HPP_
#include "arbrePhylo.hpp"
class maillon {

	protected : 
		int score;
	
	public : 
		/** Constructeur par defaut */
		maillon();
		/** Destructeur par defaut */
		~maillon();

};
#else
class maillon;
#endif /* MAILLON_HPP_ */
0
Jumbo
 
En quoi la technique de l'ajout de "class" est moche ? C'est une utilisation claire du language, bien moins louche que la tienne.
0
Zempachi Messages postés 7472 Date d'inscription   Statut Contributeur Dernière intervention   906
 
C'est en fait plus propre.
La méthode de Char Snipeur permet de ne plus avoir ce genre problème dans le cas ou l'on rajoute une autre classe dépendante de la classe maillon: on n'a plus besoin de rajouter un "class maillon" avant la déclaration de la nouvelle classe créée, tout étant géré "automatiquement".

Ce que j'avais proposé était une solution de facilité/rapidité et pas franchement recommandable dans le cadre d'un développement "sérieux".
0