Bonjour tout le monde,
 
Jusqu'à présent, je m'en sortais relativement facilement avec les #ifndef et les forward déclarations, mais j'arrive maintenant à un cas de figure qui m'embête un peu, et je me casse les dents dessus depuis qqs heures maintenant :|  
 
Voici la situation que je résume à l'aide de 2 fichiers, foobar.h et main.cpp.
 
Fichier foobar.h
Code :
 - #ifndef _20031012_FOOBAR
 - #define _20031012_FOOBAR
 - class Foo {
 - public:
 -         Bar* monBar ;
 -         void maMethode() { monBar->maMethode() ; }
 - } ;
 - class Bar {
 - public:
 -         Foo* monFoo ;
 -         void maMethode() { monFoo->maMethode() ; }
 - } ;
 
  | 
 
Fichier main.cpp
Code :
 - #include "foobar.h"
 - int main() {
 -         Foo* f = new Foo() ;
 -         Bar* b = new Bar() ;
 -         f->monBar = b  ; b->monFoo = f  ;
 -         f->maMethode() ; b->maMethode() ;
 - }
 
  | 
 
Ce n'est pas dans le fichier main.cpp que se situe le problème, mais je vous l'ai mis si vous vouliez faire l'essai chez vous. Voici le résultat de la compilation :
 
Résultat de la compilation
 $> g++ -Wall -pedantic main.cpp
 In file included from main.cpp:1:
 foobar.h:7: syntax error before `*' token
 foobar.h: In member function `void Foo::maMethode()':
 foobar.h:8: `monBar' undeclared (first use this function)
 foobar.h:8: (Each undeclared identifier is reported only once for each function
    it appears in.)
 main.cpp: In function `int main()':
 main.cpp:7: `class Foo' has no member named `monBar'
 $>
   | 
 
J'ai effectué une recherche, mais je n'ai pas trouvé de topics faisant référence à ce cas de fugure particulier (appel d'une fonction membre d'une classe dans une classe, à travers un pointeur). J'imagine qu'il s'agit d'un problème pourtant classique maintes et maintes fois débatu, je m'escuse par avance de la redondance.
 
Si quelqu'un à le courage de me donner un petit coup de main, ca serait sympa !
 
Merci, @+
 
Message édité par Evadream -jbd- le 11-10-2003 à 17:33:21