在一个项目中,我有2个类(class):

//mainw.h

#include "IFr.h"
...
class mainw
{
public:
static IFr ifr;
static CSize=100;
...
};

//IFr.h
#include "mainw.h"
...
class IFr
{
public float[mainw::CSize];
};

但是我无法编译此代码,在static IFr ifr;行出现错误。是否禁止这种交叉包含?

最佳答案



是。

一种变通方法是说mainw的ifr成员是引用或指针,以便将进行前向声明而不是包括完整声明,例如:

//#include "IFr.h" //not this
class IFr; //this instead
...
class mainw
{
public:
static IFr* ifr; //pointer; don't forget to initialize this in mainw.cpp!
static CSize=100;
...
}

或者,在单独的头文件中定义CSize值(以便Ifr.h可以包括该其他头文件,而不包括mainw.h)。

关于c++ - 循环C++ header 包括,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1281641/

10-09 03:42