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
我也被拒绝了。 所以我试着在A.h文件中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
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的参数