You can't create objects from forward declarations. Make them pointers instead.
Code:
#include "sdl.h"

class Vector3;
class Point3;

class Ray {
 public:
  //Ray();
  Point3* start;
  Vector3* dir;
  //void setStart(Point3& p) {start = new Point3(); start.x=p.x; start.y=p.y; start.z=p.z;};
  //void setDir(Vector3& v) {dir = new Vector3(); dir.x=v.x ; dir.y=v.y ; dir.z=v.z;};
  //other fields and methods....
};
of course you probably want to do the new in the constructor, i just did it there to make your example work