ВУЗ:
Составители:
Рубрика:
typedef shape* sp; /*-определение простого имени типа; */
declare(gslist,sp); /*-макрогенерация типов для списка и */
/* его итератора; */
Сгенерированные типы с точностью до обозначения их имен
выглядят следующим образом:
struct sp_gslist:slist /*-циклический односвязный список; */
{ int insert(sp a) { return slist::insert(ent(a)); }
int append(sp a) { return slist::append(ent(a)); }
sp get() { return sp(slist::get()); }
sp_gslist(){}
sp_gslist(sp a):slist(ent(a)){}
};
struct sp_gslist_iter:slist_iterator
{ sp_gslist_iter(sp_gslist& s):
slist_iterator((slist&)s) {}
sp operator()()
{ return sp(slist_iterator::operator()()); }
};
sp_gslist shape_list;/*-определение списка фигур с пустым */
/* конструктором; */
Теперь необходимо определить общее понятие фигуры shape
таким образом,чтобы оно использовалось как базовый класс
всеми конкретными фигурами:линиями,прямоугольниками,кругами
и т.д.Причем манипулирование фигурой должно осуществляться
только через фиксированный интерфейс:
struct shape /*-определение понятия фигуры: */
{ shape(){ shape_list.append(this);}/*-конструктор,*/
/* осуществляющий включение вновь опреде- */
/* ляемой фигуры в конец списка; */
virtual point north() { return point(0,0); }
/*-север; */
70
typedef shape* sp; /*-определение простого имени типа; */ declare(gslist,sp); /*-макрогенерация типов для списка и */ /* его итератора; */ Сгенерированные типы с точностью до обозначения их имен выглядят следующим образом: struct sp_gslist:slist /*-циклический односвязный список; */ { int insert(sp a) { return slist::insert(ent(a)); } int append(sp a) { return slist::append(ent(a)); } sp get() { return sp(slist::get()); } sp_gslist(){} sp_gslist(sp a):slist(ent(a)){} }; struct sp_gslist_iter:slist_iterator { sp_gslist_iter(sp_gslist& s): slist_iterator((slist&)s) {} sp operator()() { return sp(slist_iterator::operator()()); } }; sp_gslist shape_list;/*-определение списка фигур с пустым */ /* конструктором; */ Теперь необходимо определить общее понятие фигуры shape таким образом,чтобы оно использовалось как базовый класс всеми конкретными фигурами:линиями,прямоугольниками,кругами и т.д.Причем манипулирование фигурой должно осуществляться только через фиксированный интерфейс: struct shape /*-определение понятия фигуры: */ { shape(){ shape_list.append(this);}/*-конструктор,*/ /* осуществляющий включение вновь опреде- */ /* ляемой фигуры в конец списка; */ virtual point north() { return point(0,0); } /*-север; */ 70
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »