23
votes

In my current project I have separated my class files and my header files. My project structure currently looks like this:

  • Project

    • Source
      • src
        • class1.cpp
        • class2.cpp
      • main.cpp
    • Header
      • include
        • class1.h
        • class2.h

My problem is that I do not know how to include the header files into the class files. Am I unable to link to headers that are not at the same level or in a child folder? Or is there some way to go from the project root and work my way down? For instance:
#include "Project/Headers/include/class1.h" inside the class1.cpp file

3
Probably you meant #include instead of include. Corrected for this.amit kumar

3 Answers

24
votes

Assuming you want class1.cpp to include class1.h you would do something like this

#include "../../Header/class1.h"

The .. tells the tells the OS to jump 1 directory up when the compiler asks for the file.

18
votes

You need to indicate the include path <the directory containing Project> to your compiler so that the compiler is able to find the included headers. Using gcc, you could use -I option, and using visual studio, you could use /I.

1
votes

I had a very similar problem where my compiler could not find the header with a code::blocks C++ project (same file structure as OP) .

This worked for me:

#include "../include/class1.h"