C++;包括-交叉引用文件 在C++中,我有A.H和B.H。 我需要在B.h中包含A.h,然后我需要在A.cpp中使用来自B的对象。所以我在A.h中加入了B.h,所以它拒绝了。 我试图在.H文件中使用这些行 #ifndef A_H #define A_H ...my code #endif

C++;包括-交叉引用文件 在C++中,我有A.H和B.H。 我需要在B.h中包含A.h,然后我需要在A.cpp中使用来自B的对象。所以我在A.h中加入了B.h,所以它拒绝了。 我试图在.H文件中使用这些行 #ifndef A_H #define A_H ...my code #endif,c++,include,C++,Include,我也被拒绝了。 所以我试着在A.h文件中 class B; 作为定义的类。 所以它把它当作另一门课,而不是我想要的B课。 我必须做什么?您不能在B.h中包含A.h,也不能在A.h中包含B.h-这是一个循环依赖项 如果a中的结构或函数需要引用指向B中结构的指针(反之亦然),则可以只声明结构而不定义它们 在A.h.中: #ifndef __A_H__ #define __A_H__ struct DefinedInB; struct DefinedInA { Defined

我也被拒绝了。 所以我试着在A.h文件中

class B;
作为定义的类。 所以它把它当作另一门课,而不是我想要的B课。
我必须做什么?

您不能在B.h中包含A.h,也不能在A.h中包含B.h-这是一个循环依赖项

如果a中的结构或函数需要引用指向B中结构的指针(反之亦然),则可以只声明结构而不定义它们

在A.h.中:

 #ifndef __A_H__
 #define __A_H__

 struct DefinedInB;

 struct DefinedInA
 {
     DefinedInB* aB;
 };

 void func1(DefinedInA* a, DefinedInB* b);

 #endif __A_H__
在B.h中:

 #ifndef __B_H__
 #define __B_H__

 struct DefinedInA;

 struct DefinedInB
 {
     DefinedInA* anA;
 };

 void func2(DefinedInA* a, DefinedInB* b);

 #endif __B_H__

您只能使用指针来执行此操作,以避免循环依赖。

您不能在B.h中包含A.h,也不能在A.h中包含B.h-这是一种循环依赖

如果a中的结构或函数需要引用指向B中结构的指针(反之亦然),则可以只声明结构而不定义它们

在A.h.中:

 #ifndef __A_H__
 #define __A_H__

 struct DefinedInB;

 struct DefinedInA
 {
     DefinedInB* aB;
 };

 void func1(DefinedInA* a, DefinedInB* b);

 #endif __A_H__
在B.h中:

 #ifndef __B_H__
 #define __B_H__

 struct DefinedInA;

 struct DefinedInB
 {
     DefinedInA* anA;
 };

 void func2(DefinedInA* a, DefinedInB* b);

 #endif __B_H__

您只能使用指针来执行此操作,以避免循环依赖关系。

请参见

通常,最好避免循环引用,但如果您在设计中需要循环引用,并且依赖关系如下所示:

a.h <-- b.h <-- a.cpp (where x <-- y represents "y" depends on "x")

一般来说,最好避免循环引用,但如果在设计中需要循环引用,并且依赖项如下所示:

a.h <-- b.h <-- a.cpp (where x <-- y represents "y" depends on "x")

另请参见:对不起,您的描述有点混乱。张贴所有文件的示例代码会有所帮助。请在问题中使用标点符号和适当的大写字母。如果你不能花时间清楚地沟通,为什么你会期望这里的人花时间清楚地回答?另请参见:对不起,你的描述有点混乱。张贴所有文件的示例代码会有所帮助。请在问题中使用标点符号和适当的大写字母。如果你不能费心花时间清楚地交流,为什么你希望这里的人花时间清楚地回答呢?但是A.h中的问题我有一个函数,它有一个来自B的参数,而A.h中的问题我有一个函数,它有一个来自B的参数