I am starting a Quaternion class, and this is what I have so far:
Code:
class Vector3D;
class Matrix3X3;
class EulerAngle;

class Quaternion {
 public:
  float x, y, z, w;

  Quaternion(float a, float b, float c, float d) : x(a), y(b), z(c), w(d) {}
/*
  Quaternion(float d, const Vector3D &v) : x(v.x), y(v.y), z(v.z), w(d) {}
*/
  Quaternion(const Quaternion &q) : x(q.x), y(q.y), z(q.z), w(q.w) {}

 ~Quaternion() {}
};
EVERY file is included. When you uncomment the second constructor, i get 3 errors (edited a bit):
1. x is not a member of Vector3D, as the type is not yet defined in the second contructor.
2. y is not a member of Vector3D, as the type is not yet defined in the second contructor.
3. z is not a member of Vector3D, as the type is not yet defined in the second contructor.

x, y, and z are all public. Any ideas on the problem? Thanks .