title: Error: Field has an incomplete type
body: <p>quaternion.h:15: error: field ‘v’ has incomplete type</p>
  
  <p>Hi! I am stuck on an error that I cannot seem to solve.</p>
  
  <p>Below is my code:</p>
  
  <pre><code>#ifndef QUATERNION_H
  #define QUATERNION_H
  
  #include "vec3.h"
  
  class Vec3;
  
  class Quaternion
  {
  
  public:
  
   Quaternion(Vec3 v);
  
   Quaternion(double w, Vec3 v);
  
   Vec3 v; &lt;--------------------------This is where the error is :(
  
   double scalar;
  
  
  
   Quaternion operator *(Quaternion s);
  
   Quaternion conjugate();
  
  };
  
  
  
  #endif
  </code></pre>
  
  <p>My Vec.h looks like this:</p>
  
  <pre><code>#ifndef VEC3_H
  
  #define VEC3_H
  
  
  
  #include "point.h"
  
  #include "quaternion.h"
  
  #include &lt;math.h&gt;
  
  class Quaternion;
  
  
  class Vec3
  
  {
  
   friend ofstream&amp; operator &lt;&lt;(ofstream&amp; output, const Vec3&amp; p);
  
   friend ifstream&amp; operator &gt;&gt;(ifstream&amp; input, Vec3&amp; p);
  
  
  
   public: 
  
   Vec3();
  
   Vec3(double _x, double _y);
  
   Vec3(double _x, double _y, double _z);
  
  
  
   double x,y,z;
  
  
  
   //Operators
  
   Vec3 operator -(Vec3 a) const;
  
   Vec3 operator /(double s) const;
  
   Vec3 operator *(double s) const;
  
   Vec3 operator *(Quaternion q) const;
  
  
  
   // Used to do vector Vec3 addition
  
   Vec3 operator +(Vec3 a) const;
  
   Point operator +(Point a) const;
  
  
  
   Vec3&amp; operator =(Point a);
  
  
  
   Vec3 crossProduct(Vec3 v1); // Itself cross v1
  
   double dotProduct(Vec3 v);
  
   double length();
  
   void normalize();
  
  
  };
  
  
  
  #endif
  </code></pre>
  
  <p>Thanks for the help again =)</p>