Bonjour,

je ne comprend pas bien ce qui cloche dans le code suivant (simplifié par souci de clarté) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
// A.cpp
 
#include "A.h"
#include "B.h"
 
void A::fonctionMembreDeA(C& c)
{
      B b;                               // Erreur : expected ';' before b;
 
      c.b[2].fonctionMembreDeB();        // Pas de problème
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
// A.h
 
#include "C.h";                                  // Compile avec include mais pas avec déclaration anticipée
 
class A
{
public:
      void fonctionMembreDeA(C& c);
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
// B.h
 
class B
{
public:
      void fonctionMembreDeB();
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
// C.h
 
#include <vector>
 
class B;
 
class C
{
public:
      vector<B> b;
};
Dans ma fonction principale A, je peut donc utiliser une fonction membre de la classe B mais pas créer d'instance de cette classe !

Je précise au cas ou ce serait utile que les fichiers B.h et C.h viennent toute deux d'un autre projet qui tourne très bien.

Merci d'avance pour vos suggestions.