在一个项目中,我有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/