We can solve the problem of including a header file twice by defining a unique preprocessor instruction constant that if it is encountered we do not process the body of the header file, i.e.:
#ifndef SOME_ARBITRARY_CODE #define SOME_ARBITRARY_CODE //.... body of header file goes here. #endif // end of the block which started at line 2