Classes et includes croisés

Résolu
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 7 mai 2008 à 18:56
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 7 mai 2008 à 21:40
Bonjour à tous!
  Je me casse la tête sur des include croisés...

J'ai une classe Parseur contenant des balises:
class Parseur
{
    private:
        Balises balises;
}

typedef map<string, Balise> Balises;

Et Balise est une classe:
class Balise
{
    private:
        FoncOscil fonc;

    public:
        FoncOscil getFonc( );
};

En fait le tout me sert à faire un parseur et constuire un élément depuis les données créées. Une Balise contient son nom, son id et les id des enfants auxquelle elle à droit. Balises est un tableau associatif de Balises.

J'aimerais que chaque balise contienne un pointeur vers une fonction de la classe Parseur:
typedef string ( Parseur::*FoncOscil )( XMLData );

Le problème c'est que balise.h a besoin de parseur.h et vice versa... J'ai des include croisés et plus rien ne fonctionne, c'est le drame :P

Comment faire?

Merci!

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
7 mai 2008 à 21:32
dans le fichier Balise.h (ou quelque soit son nom) tu ajoutes une déclaration de la classe Parseur; du coup pas besoin d'inclure Parseur.h pour définir la classe Balise :

// fichier Balise.h
class Parseur;

class Balise
{
...
};

// fichier Parseur.h
#include "Balise.h"

class Parseur
{
...
};

si tu es sous compilo microsoft tu peux éventuellement préciser (cf MSDN) :
class __single_inheritance Parseur;
ou
class __multiple_inheritance Parseur;
ou encore
class __virtual_inheritance Parseur;
3
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
7 mai 2008 à 21:40
Salut!
  Merci pour ta réponse! En fait je ne savais pas qu'on pouvait déclarer une classe plusieurs fois. Du coup, j'ai juste ajouté:
class Parseur; dans balise.h et tout est merveilleux! :)

Bonne soirée!

Raf

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
Rejoignez-nous