devxlogo

Avoiding Recursive Header Includes

In C/C++ header files, it’s often necessary to include the header files of sub classes or classes which are used. For example:

 #include "a.h"     <- in b.h

Sometimes header files need to include each other, as in:

 #include "a.h"     <- in b.h#include "b.h"     <- in a.h

This results in recursion within the headers, which often cannot be solved by using #ifndef's. To work around this, only include headers in .cpp files. In header files, simply re-declare the class you need to use (e.g. class B;). As methods will only be called in the .cpp files, there is no need to include the full header.

 class B     &tl;- in a.h..void SetB(B * b);..B * myB;

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  How Engineering Leaders Spot Weak Proposals

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.