Перегрузка операторов - Pascal

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Видел несколько сайтов, на которых описана перегрузка операторов в Паскале на примерах. Например, здесь: http://pas1.ru/oop/operator Вот код оттуда же:
type
  TComplex = class
    private
      x,y: real; //действительная и мнимая части
    public
      constructor Create;
      function Modul(): real;
      function Argument(): real;
      procedure Printer();
  end;
constructor TComplex.Create;
  begin
    x := 0; y := 0;
    inherited Create;
  end;
function TComplex.Modul(): real;
  begin
    modul := sqrt(x*x + y*y);
  end;
function TComplex.Argument(): real;
  begin
    argument := arctan(y/x) * 180/pi;
  end;
procedure TComplex.Printer();
  begin
    if y >= 0 then
      writeln(x:3:1,'+',y:3:1,'i')
    else
      writeln(x:3:1,y:3:1,'i');
  end;
 
operator +(const a,b: TComplex)r: TComplex;
  begin
    r := TComplex.Create;
    r.x := a.x + b.x;
    r.y := a.y + b.y;
  end;
operator -(const a,b: TComplex)r: TComplex;
  begin
    r := TComplex.Create;
    r.x := a.x - b.x;
    r.y := a.y - b.y;
  end;
 
var
  c1, c2, c3, c4: TComplex;
  a, b: real;
begin
  c1 := TComplex.Create;
  c2 := TComplex.Create;
  c3 := TComplex.Create;
  c4 := TComplex.Create;
  write('real and imag of the FIRST number: ');
  readln(c1.x, c1.y);
  write('real and imag of the SECOND number: ');
  readln(c2.x, c2.y);
  c3 := c1 + c2;
  c4 := c1 - c2;
  c3.printer();
  c4.printer();
readln;
end.
Пробовал скомпилировать и запустить этот код на PascalABC, Free Pascal и на всякий случай на RAD Studio, и везде не компилится, ошибку выдает на строчке, где начинается описание оператора. Вопрос: в чем прекол? Где-нибудь этот код вообще работает? Прошу помочь мне разобраться с этим. P.S. Бочку сделал, ну и... соснул... ну вы поняли.

Решение задачи: «Перегрузка операторов»

textual
Листинг программы
{$mode objfpc}

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

  1. mode - это ключевое слово, используемое в среде разработки Free Pascal для определения режима компиляции.
  2. objfpc - это значение переменной, которое указывает на то, что используется режим компиляции поддержки объектно-ориентированного программирования в Free Pascal.

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


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

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

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