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 :
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 |
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 |
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 :
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 :
error: forward declaration of struct B
Je précise aussi que les fichiers .cpp sont tous vides.
Quelqu'un pourrait-il m'aider ?
merci.
Partager