I'm doing a simple solar system modelling program with OpenGL, so it's not really a game. However my main goal is to understand better and practice the advanced features of c++ as well as learn to design classes. I wrote code to read in the data about planets from a file and render the planets.
What I need help with is design. It would be great if you could tell me if there's anything wrong with my current design or maybe suggest something better.
Another thing i need help with is error checking. What to do with errors? throw an error? call exit() or what? how do you handle errors in game programming?
here's the .h file:
#ifndef SOLAR_SYS_H
#define SOLAR_SYS_H

#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>

#include <fstream>
#include <string>
#include <vector>
#include <list>
#include <stdexcept>

#include <cmath>
#include <cstdlib>

//Abstract base class
class Shape
  virtual void draw() = 0;
  virtual bool create() = 0;

//Sphere class, based on Shape
class Sphere : public Shape
  virtual ~Sphere()
    dlat = dlng = 0;
    r = 0.0;
    vnum = 0;
  //explicit Ctor: radius, points for lattitude, points for longitude
  explicit Sphere(GLfloat rad = 1.0, GLint dl = 42, GLint dg = 84);
  //draw the sphere
  void draw();
  bool create(); //virtual
  // gen_sphere: create() wrapper, if change == true, then replace the params given in Ctor
  void gen_sphere(GLfloat, GLint, GLint, bool change = false); 
  struct Vertex //coords
    GLfloat z, y, x;
  GLint dlat, dlng; //lattitude & longitude
  GLfloat r; //radius
  std::vector<Vertex> vert; //coords vector
  size_t vnum; //should be same as vert.size()
  //no copy ctor & op=
  Sphere(const Sphere&);
  Sphere & operator=(const Sphere &);

//defined later
class Planet_info;

// Planets class holds information about all planets
// of the solar system. Only one instance should be
// created for all planets. This is because Planets
// inherits from Sphere and only one sphere should be
// generated in the program. All planets will reuse this
// one sphere.
class Planets : public Sphere
  Planets(const char *s);
  void draw(); //replace the virual Sphere::draw()
  std:: istream & add_planet(std::istream &); //add a planet from file
  //void del_planet(const Planet_info &);
  size_t planet_num; //number of loaded planets
  //no copy ctor & op=
  Planets(const Planets &);
  Planets & operator=(const Planets &);
  // a std::list with info about all planets 
  std::list<Planet_info*> planets; 
  //TEXTURE support goes here (?) 

// friend of Planets, with info such as
// radius, orbit, name and other.
class Planet_info
  friend class Planets;

  Planet_info(const Planet_info &);
  Planet_info & operator=(const Planet_info &);   
  //read info from file 
  friend std::istream & operator>>(std::istream &, Planet_info &);
  std::string name;
  GLfloat radius;
  GLfloat orbit;
  GLfloat mass;
  GLfloat spd;
  GLfloat revol; 
  //std::list<Planet_info*> satellites;
  GLfloat rot1, rot2; //orbit- and revolution-angles