Не работает функция в копии при копировании объекта - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д