Circular C++ Header Includes

c++, circular-dependency, include, static

Solution

Is this kind of cross-inclusions are prohibited?

Yes.

A work-around would be to say that the ifr member of mainw is a reference or a pointer, so that a forward-declaration will do instead of including the full declaration, like:

//#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;
...
}

Alternatively, define the CSize value in a separate header file (so that Ifr.h can include this other header file instead of including mainw.h).

Problem

In a project I have 2 classes: // 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]; }; ``` But I cannot compile this code, getting an error at the `static IFr ifr;` line. Is this kind of cross-inclusion prohibited?

Original source

Related problems