Не работает функция в копии при копировании объекта - 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.

Объяснение кода листинга программы

  1. Объявлен тип данных TShape, который является объектом.
  2. У объекта TShape есть свойства x, y и color.
  3. Реализованы два конструктора: Init и CopyFrom.
  4. Конструктор Init инициализирует свойства x, y и color.
  5. Конструктор CopyFrom создает копию объекта, инициализируя свои свойства значениями свойств другого объекта.
  6. Объявлены две переменные a и t типа PShape (указатель на объект TShape).
  7. Переменная a инициализируется новым объектом TShape с помощью конструктора Init.
  8. Переменная t инициализируется новым объектом TShape с помощью конструктора CopyFrom, который использует объект a.
  9. ... (код не рассматривает, что происходит с объектами a и t).
  10. Вызов Dispose для объекта t.
  11. Вызов Dispose для объекта a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы