#ifndef _COLLECTION_H_ #define _COLLECTION_H_ class Collection { public: virtual ~Collection() {} virtual void add(int) = 0; virtual bool remove(int) = 0; virtual Collection& operator=(const Collection&) = 0; virtual int operator[](int) = 0; virtual Collection *copy(void) = 0; int get_size(void) const; void iterate(void (*)(int *)); virtual bool contains(int) const; private: protected: Collection() : size_(0) {} int size_; }; #endif