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(); };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 ^^
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(); }
j'obtient le message suivant :je suppose que c'est parce que la définitionerror: invalid use of undefined type `struct ClassB'
error: forward declaration of `struct ClassB'ne définit pas la fonction fonction_de_B() ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part class ClassB;
comment faire???
Partager