2 textbook classess reference each other within their declarations, how to compile???

OK, as you can see. these two classes each require the other to be declareded in order to declare itself. i found these in a text book. there must be some way to make them compile. but as is they will not under any circumstances beknownst by my self. i don’t understand why they won’t compile. if you reverse their ordinal positions then they present the exact opposite errors. surely their is a simple solution. please advise if you can asap. i have to start spring semester tomorrow. i’ll apreciate it so much. thanks

Michale

//@@@@@@@@@@@@@@@@@@@@@ GeomObj class @@@@@@@@@@@@@@@@
class GeomObj{
public:

	IntRect scrnExtnt;
	Cuboid genBoxExtent,worldBoxExtent;
	SphereInfo genSphereExtent,worldSphereExtent;
	GeomObj * next;
	GeomObj(): next(NULL){}
	virtual bool hit(Ray &r, Intersection &inter);    //<<<<<<< WARNING
	virtual void loadStuff();     
	virtual void drawOpenGL();      
	virtual void tellMaterialsGL();      
	virtual void makeExtentPoints(PointCluster& clust);
	virtual Point2 texturePoint(Point3 p); 
	virtual Color3 texture(HitInfo& h);  

};

//@@@@@@@@@@@@@@@@@@@@ Ray @@@@@@@@@@@@@@@@@@@@@@@@@
class Ray{
public:
Point3 start;
Vector3 dir;
int recurseLevel;
int row, col; // for screen extents
int numInside; // number of objects on list
GeomObj* inside[10]; // array of object pointers

Ray();
Ray(Point3 origin); //constructor: set start point of ray
Ray(Point3& origin, Vector3& direction); 
void setStart(Point3& p);
void setDir(float x, float y, float z);
void setRayDirection(Light *L); //for shadow feelers
void setRayDirection(Vector3& dir); //for spawned rays
int isInShadow();
void makeGenericRay(GeomObj* p, Ray& gr);

};

[This message has been edited by wildeyedboyfromfreecloud (edited 01-06-2002).]

  1. this is not opengl-related but c+±related
  2. this is certainly not an advanced question and should be posted at the beginners forum

here is the solution anyway:

class GeomObj;
class Ray;

class GeomObj {

};

class Ray {

};