我知道类似的问题已经问过,但是在做了我的研究之后,我仍然对循环标题包含了一些问题。C++循环标题包括
//FooA.h
#ifndef H_FOOA
#define H_FOOA
#include "foob.h"
class FooA{
public:
FooB *fooB;
};
//FooB.h
#ifndef H_FOOB
#define H_FOOB
class FooA;
class FooB{
public:
FooA *fooA;
};
现在,如果我有两个循环依赖这是我看到人们在stackoverflow解决问题的方式。我这个唯一的问题是,在我的main.cpp我必须包括fooa.h先foob.h
//main.cpp the right way
#include "fooa.h"
#include "foob.h"
//main.cpp that will surely get a compile error
#include "foob.h"
#include "fooa.h"
现在我的问题是:“有没有办法来转发的方式,将宣布这些类让我不关心在main.cpp中包含头文件的顺序?“
作为答案所指出的那样,你可以在这两个文件使用一个向前声明。如果情况更复杂,你可以从'foob.h'中#include“fooa.h”,这将保证你想要的包含顺序。 – 2012-08-15 14:48:39
示例代码中的内容中没有任何循环。如果你添加缺少的#endif的一切都很好。你得到了什么编译错误? – 2012-08-15 15:10:50