Listing 5 Class and inline member function definitions for a generic queue of common *

//
// comq6.h - generic queue of common *
// with an iterator class
//

#include "common.h"

class comq
   {
private:
   struct cell
      {
      cell(const common &e, cell *p);
      ~cell();
      cell *next;
      common *element;
      };
   cell *first, *last;
public:
   comq();
   ~comq();
   void append(const common &e);
   void clear();
   int remove(common &e);
   class iterator;
   friend class iterator;
   class iterator
      {
   public:
      iterator(comq &q);
      common *next();
   private:
      cell *pc;
      };
   };
   
inline comq::cell::cell(const common &e, cell *p)
   : element(e.dup()), next(p)
   {
   }

inline comq::cell::~cell()
   {
   delete element;
   }

inline comq::iterator::iterator(comq &q)
   : pc(q.first)
   {
   }
   
inline comq::comq() : first(0), last(0)
   {
   }
   
inline comq::~comq()
   {
   clear();
   }
   
/* End of File */