#ifndef __CONTAINER_HPP #define __CONTAINER_HPP template class aContainerIterator; template class aContainer { friend class aContainerIterator; public: virtual ~aContainer() {} virtual int insert(const T& e) =0; virtual int count() const =0; int empty() const =0; aContainerIterator *initIterator() =0; }; template class aContainerIterator { public: virtual void ~aContainerIterator() {}; virtual int more() const; virtual operator int() const { return more(); } virtual void next() =0; virtual void prev() =0; virtual T *get() =0; void remove() =0; }; #endif