title: How to avoid #include in header files when forward declaration causes incomplete type error?
body: <p>How to avoid #include in header files when forward declaration causes incomplete type error?</p>
  
  <p>This is my <code>ray.h</code> header file. When I implement forward declaration <code>Vector</code> turns an incomplete type. In this case, I Will have to use #include in a header file?</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include "vector.h"
  
  struct Ray {
      Vector position, direction; // error: incomplete type when it uses forward declaration
  
      Ray();
      Ray(Vector position, Vector direction);
      ~Ray();
  };
  </code></pre>