Не работает функция в копии при копировании объекта - Free Pascal
Формулировка задачи:
См. anatolii_5.pas, строка 75. Объект был скопирован, однако функция Erase не работает. Функция объекта настраивается на объект с определенным адресом что ли? Возможно ли это исправить? Нужно чтобы последовательность функций осталась: Move, Erase, Draw. Подскажите пожалуйста, заранее спасибо
Решение задачи: «Не работает функция в копии при копировании объекта»
textual
Листинг программы
- type
- TShape = object
- protected
- x, y: Integer; color: Word;
- public
- constructor Init(ax, ay: Integer; aColor: Word);
- constructor CopyFrom(const o: TShape);
- ...
- end;
- constructor TShape.Init(ax, ay: Integer; aColor: Word);
- begin
- x:=ax; y:=ay; color:=aColor;
- end;
- constructor TShape.CopyFrom(const o: TShape);
- begin
- x:=o.x; y:=o.y; color:=o.color;
- end;
- ...
- var
- a, t: PShape;
- begin
- a:=New(PShape,Init(50,50,1));
- t:=New(PShape,CopyFrom(a^));
- ...
- Dispose(t);
- Dispose(a);
- end.
Объяснение кода листинга программы
- Объявлен тип данных TShape, который является объектом.
- У объекта TShape есть свойства x, y и color.
- Реализованы два конструктора: Init и CopyFrom.
- Конструктор Init инициализирует свойства x, y и color.
- Конструктор CopyFrom создает копию объекта, инициализируя свои свойства значениями свойств другого объекта.
- Объявлены две переменные a и t типа PShape (указатель на объект TShape).
- Переменная a инициализируется новым объектом TShape с помощью конструктора Init.
- Переменная t инициализируется новым объектом TShape с помощью конструктора CopyFrom, который использует объект a.
- ... (код не рассматривает, что происходит с объектами a и t).
- Вызов Dispose для объекта t.
- Вызов Dispose для объекта a.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д