Listing 3
template<typename T, int N> class FixedStack : AbstractStack { public: FixedStack() : cur(0) { } ~FixedStack() { while (!IsEmpty()) Pop(); } void Push(std::auto_ptr<Item> x) { m.push_back(x.release()); } std::auto_ptr<Item> Pop() { assert(cur > 0); std::auto_ptr<Item> x = m[cur-1]; m.pop_back(); return m; } bool IsEmpty() { return cur == 0; } private: int cur; Item* m[N]; };