simple stack

    技术2022-05-11  67

    class GenericStack{protected:  GenericStack():top(0){}  virtual ~GenericStack()  {   while(top)   {    Data *temp = top;    top = top->next;    delete temp;   }

       top = 0;  }  void push(void *value)  {   top = new Data(value,top);  }

      void* pop()  {   if (top)    return top->val;  }  bool empty()const  {   return top == 0;  }private:

     struct Data {  void *val;  Data* next;

      Data(void *v,Data *ne):val(v),next(ne){} };

     Data *top;};

    template<class T>class Stack : private GenericStack{public:

     void push( T *v) {  GenericStack::push(v); }

     ~Stack() {

     }

     T* value() {     return static_cast<T*>(GenericStack::pop()); }

     bool empty()const {  return GenericStack::empty(); }

    };

    int main(){ string a1 = "hello",b = "good"; Stack<string> a; a.push(&a1); a.push(&b); cout<<*(a.value());  system("pause");} 


    最新回复(0)