#include <iostream> #include <string> #define CAP 100 using namespace std; class group { public: group():pc(0){} virtual ~group(){} friend class Iterator; void push(string m) { if (pc<CAP) vec[pc++]=m; } string pop() { if (!isempty()) return vec[--pc]; } bool isempty() { if (pc<=0) { return true; } return false; } private: int pc; string vec[CAP]; }; class absIterator { public: absIterator(){} virtual ~absIterator(){} virtual string operator++()=0; virtual string operator++(int)=0; }; class Iterator : public absIterator { public: Iterator(group *gup):index(0),p_gup(gup){} virtual ~Iterator(){} string operator++() { return p_gup->vec[++index]; } string operator++(int) { return p_gup->vec[index++]; } private: group* p_gup; int index; }; int main() { group *gp=new group; gp->push("sadfs"); gp->push("werwer"); gp->push("28934759"); Iterator* it=new Iterator(gp); for (int i=0;i<3;i++) { cout<<(*it)++<<endl; } delete it; delete gp; system("pause"); return 0; }