Salut!

J'ai un problème avec des references croisées, des classes qui utilisent des fonctions l'une de l'autre de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ClassB;
 
class ClassA
{
      protected :
 
                ClassB* p_classB;
 
      public :
 
                ClassA();
                ~ClassA();
 
                void fonction_de_A();
 
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "ClassA.h"
 
ClassA::ClassA(){
 
}
 
ClassA::~ClassA(){
 
}
 
void ClassA::fonction_de_A(){
    p_classB->fonction_de_B();
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "ClassA.h"
 
class ClassB
{
      protected :
 
                ClassA* classA;
 
      public :
 
                ClassB();
                ~ClassB();
 
                void fonction_de_B();
 
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "ClassB.h"
 
ClassB::ClassB(){
 
}
 
ClassB::~ClassB(){
}
 
void ClassB::fonction_de_B(){
 
}
 
void ClassB::une_autre_fonction_de_B(){
 
   classA->une_autre_fonction_de_A();
 
}
c'est une version simplifié, en réalité il 'y encore d'autre classes entre A et B (on pourrait dire que A utilise B qui utilise C qui utilise A...). On suppose aussi que les pointeurs sont bien initialisés hein ^^

j'obtient le message suivant :
error: invalid use of undefined type `struct ClassB'
error: forward declaration of `struct ClassB'
je suppose que c'est parce que la définition ne définit pas la fonction fonction_de_B() ???

comment faire???