title: C++ circular header includes
body: <p>I know that similar questions to this have been asked before but after doing my research I still have questions about circular header includes.</p>
  
  <pre><code>//FooA.h
  #ifndef H_FOOA
  #define H_FOOA
  
  #include "foob.h"
  
  class FooA{
     public:
        FooB *fooB;
  };
  
  
  //FooB.h
  #ifndef H_FOOB
  #define H_FOOB
  
  class FooA;
  class FooB{
     public:
        FooA *fooA;
  };
  </code></pre>
  
  <p>Now if I have two circular dependencies this is the way that I have seen people on stackoverflow get around the problem. My only problem with this is that in my main.cpp I must include fooa.h first and then foob.h</p>
  
  <pre><code>//main.cpp the right way
  #include "fooa.h"
  #include "foob.h"
  
  //main.cpp that will surely get a compile error
  #include "foob.h"
  #include "fooa.h"
  </code></pre>
  
  <p>Now my question is "Is there a way to forward declare these classes in a way that will allow me to not care about the order in which I include the header files in my main.cpp?"</p>