J'ai cette erreur:
"erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int"
avec cet exemple de code:
//A.h
#include "B.h"
class A{
B* b;
..
};
//B.h
#include "A.h"
class B{
A* a; // error error C4430: missing type specifier - int assumed.
};
Il s'agit d'un dépendance circulaire problème. Pour déclarer un pointeur sur une classe, la définition de la classe n'est pas nécessaire; c'est-à-dire que le type ne doit pas nécessairement être un type complet . Vous n'avez donc pas besoin d'inclure A.h
dans B.h
, déclaration directe est suffisant. Tel que:
//B.h
class A; // change the include of A.h to forward declaration
class B {
A* a;
};