class Scene { private: (Linked List of Object*) } class Object { public: virtual float GetDistance(Object*) = 0; virtual PosData GetNextFramePosition() = 0; protected: vector position; vector direction; float xsize; float ysize; float velocity; } class Army :: Object { public: float GetDistance(Object*); PosData GetNextFramePosition(); protected: (Linked List?) Battalion* batts[25]; } class Batallion :: Object { public: float GetDistance(Object*); PosData GetNextFramePosition(); protected: (Linked List?) Soldiers* solds[25]; } class Soldier :: Object { public: float GetDistance(Object*); PosData GetNextFramePosition(); }