// SharedBuffer.cpp #include #include template class SharedBuffer { public: T& operator[](int n) { if(n<0 || shared.size()<=(unsigned)n) throw std::range_error("range error in operator[]"); return shared[n]; } T operator[](int n) const { if(n<0 || shared.size()<=n) throw range_error("range error in operator[]"); return shared[n]; } SharedBuffer& push_back(const T& t) { shared.push_back(t); return *this; } unsigned int size() { return shared.size(); } private: static std::vector shared; }; template std::vector SharedBuffer::shared; void makeBuffers() { SharedBuffer schools; schools.push_back("SU").push_back("LeMoyne").push_back("SUNY-ESF"); SharedBuffer ivyLeague; ivyLeague.push_back("Harvard").push_back("Yale").push_back("Cornell"); } void main() { makeBuffers(); SharedBuffer colleges; for(unsigned int i=0; i moreSchools; for(unsigned int i=0; i