C++ 编译器错误C4430:缺少类型说明符-假定为int

C++ 编译器错误C4430:缺少类型说明符-假定为int,c++,compiler-errors,include,circular-dependency,C++,Compiler Errors,Include,Circular Dependency,我有一个错误: C44:缺少类型说明符-int假设。注释:C++不支持缺省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. }; 这是一个问题。对于声明指向某个类的指针,不需要该类的定义;i、 e.类型不

我有一个错误:

<错误> C44:缺少类型说明符-int假设。注释:C++不支持缺省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.
};
这是一个问题。对于声明指向某个类的指针,不需要该类的定义;i、 e.类型不必是a。 因此,您不需要在
B.h
中包含
A.h
,就足够了。例如:

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

在开始使用之前,您需要将类A的声明转发到头文件B.h中。两个头文件相互包含不是一个好主意。“要理解A,你必须先理解B。”“要理解B,你必须先理解A。”但我需要它!如何解决这个问题?这可能只是因为您快速编写了示例,但是在类声明的末尾(包括卫士)也缺少分号。但是我需要在类B中使用类A的函数!在你的州,我不能这么做@用户:可以,只是不在标题中。在B的实现文件(即.cpp)中,您可以同时包含两个头文件,此时您可以访问A中的所有方法和成员。@user3571201您在class
B
的成员函数中使用class
A
的函数吗?如果是这样,您可以在
B.cpp
中定义
B
的成员函数,其中包括
A.h