авно дублируется, просто компи

Автор admin Среда, 20 мая 2009 11:32

авно дублируется, просто компилятор генерирует его за вас. Основную часть реализации для указателей можно выделить в единый класс, используя комбинацию полной и частичной специализации. Идея заключается в том, чтобы определить полную специализацию для void*, а затем создать неполные специализации для остальных типов; это позволит применять общий код для разных типов. Следующий пример демонстрирует эту методику: //: С05:Nobloat.h // Совместное использование кода при хранении указателей в стеке #i fndef N0BL0AT_H #define N0BL0AT_H #include #include #include // Основной шаблон tempiate class Stack { T* data; std::size_t count: std::size_t capacity: enum {INIT = 5}: public: StackО { count = 0: capacity = INIT: data = new T[INIT]: } void push(const T& t) { if (count == capacity) { // Выделение дополнительной памяти std::size_t newCapacity = 2*capacity; T* newData = new T[newCapacity]; for (size_t i = 0: i < count: ++i) newData[i] = data[i]: delete [] data: data = newData; capacity = newCapacity: } assert(count < capacity): data[count++] = t: } void popО { assert(count


Комментарии закрыты.