Bonjour,

Je débute en C++ et je rencontre un problème sur lequel je bute depuis près de 2h, sans trouver de solution.

Voici un exemple de code :

Code A.h : 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
19
20
21
#ifndef A_H
#define A_H
 
#include <iostream>
#include <vector>
#include "B.h"
#include "C.h"
 
class B;
 
class A{
	private :
	std::string nom;
	std::vector<B> Bs;
	std::vector<C> Cs;
 
	public :
        ...
};
 
#endif

Code B.h : 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
#ifndef B_H
#define B_H
 
#include "A.h"
#include <iostream>
 
class A;
 
class B{
	private :
	std::string nom;
	B *b;
 
	public :
	...
};
 
#endif

Code C.h : 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
19
#ifndef C_H
#define C_H
 
#include "A.h"
#include "B.h"
 
#include <vector>
#include <iostream>
 
class C : public B {
 
	private :
        ...
 
	public :
	...
};
 
#endif

Maintenant, lorsque je compile, j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: expected class-name before ‘{’ token
J'ai remarqué que lorsque j'enlève std::vector<C> Cs; dans A.h, ça compile.
Par contre, si dans C.h, je rajoute la ligne class B;, j'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: forward declaration of ‘struct B’
Je précise aussi que les fichiers .cpp sont tous vides.

Quelqu'un pourrait-il m'aider ?

merci.