web-dev-qa-db-fra.com

Erreur du compilateur C4430: spécificateur de type manquant - int supposé

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.
};
10
user3571201

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;
};
20
songyuanyao