(new Triangle); fordter i = sh

Автор admin Пятница, 5 июня 2009 11:32

(new Triangle); fordter i = shapes.beginO; i != shapes.endO: i++) (*i)->draw(); // … Завершение работы с фигурами: fordter j = shapes.beginO; j != shapes.end(); j++) delete *j; } III:- Определения классов Shape, Circle, Square и Triangle должны выглядеть вполне знакомо. Абстрактный базовый класс Shape (о чем говорит спецификатор =0) определяет интерфейс для всех разновидностей фигур. Производные классы переопределяют виртуальную функцию draw() для выполнения операции, соответствующей данному типу. Теперь мы хотим создать несколько разнотипных объектов Shape и сохранить их в контейнере STL. Рассмотрим вспомогательное определение типа typedef std::vector Container; Это определение создает синоним для вектора с элементами Shape*, а следующее определение использует его и создает другой синоним для vector::iterator: typedef Container:iterator Iter; Обратите внимание: чтобы получить правильный тип итератора, определенный в виде вложенного класса, необходимо указать имя типа контейнера. Хотя в STL существуют разные виды итераторов (прямые, двусторонние, итераторы произ- 336 Глава 7 • Обобщен


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