Ошибка компилятора C4430: отсутствует спецификатор типа - предполагается тип int [дубликат]

этот вопрос уже есть ответ здесь:

У меня есть эта ошибка:

"ошибка C4430: отсутствует спецификатор типа - предполагается тип int. Примечание: C++ не поддерживает default-int"

С этим примером кода:

//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.
};

1 ответов


Это циклическая зависимость вопрос. Для объявления указателя на некоторый класс определение класса не требуется; т. е. тип не должен быть тип. Поэтому вам не нужно включать A.h на B.h, вперед декларации достаточно. Например:

//B.h
class A; // change the include of A.h to forward declaration
class B { 
    A* a;
};