// @topic S-0314-09-03-20 C++ template class demo II // @brief template class Storage // Storage.h #ifndef STORAGE_H_INCLUDED_ #define STORAGE_H_INCLUDED_ template< typename ValueType > class Storage { unsigned int count; ValueType* storage; public: Storage( unsigned int element_count ) { allocate( element_count ); } ~Storage() { delete[] storage; } void allocate( unsigned int element_count ) { storage = new ValueType[ element_count ]; count = element_count; } void reallocate( unsigned int factor ) { ValueType* temp = new ValueType[ count * factor ]; for ( unsigned int idx = 0; idx < count; ++idx ) { temp[ idx ] = storage[ idx ]; } delete[] storage; storage = temp; count = count * factor; } void store( ValueType value, unsigned int idx ) { storage[ idx ] = value; } ValueType get( unsigned int idx ) { return storage[ idx ]; } unsigned int size() { return count; } };//class Storage #endif //STORAGE_H_INCLUDED_