Bonjour.

J'essaie de mettre en oeuvre la méthode décrite dans la FAQ "Les classes en C++" par Laurent Gomila sur les références croisées. J'ai recopié son exemple et l'ai compilé avec C++ Builder 2007.

Je suis très surpris de constater que le compilateur n'accepte pas la méthode de la déclaration anticipée et génére une série d'erreurs que je reporte ici:

[BCC32 Error] A.h(6): E2141 Declaration syntax error
[BCC32 Error] A.h(9): E2141 Declaration syntax error
[BCC32 Error] B.h(8): E2238 Multiple declaration for 'Class'
[BCC32 Error] A.h(9): E2344 Earlier declaration of 'Class'
[BCC32 Error] B.h(8): E2141 Declaration syntax error

C'est à dire que la méthode ne semble pas avoir résolu le problème de déclaration récursive des classes A et B. Le code:

A.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
class B; 
 
class A 
{ 
    B* PtrB; 
};
A.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#include "A.h" 
#include "B.h" 
 
// ...
B.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#include "A.h" 
 
class B 
{ 
    A a; 
};
B.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#include "B.h" 
 
// ...

Quelqu'un a-t-il déjà résolu ce problème?
Merci d'avance.