operator overloading в Mdelphi

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

operator overloading в Mdelphi

Сообщение XProger »

В reference имеется раздел operator overloading, в котором:
"When compiling in Delphi mode or Objfpc mode, the result identifier may be dropped. The
result can then be accessed through the standard Result symbol."

Сие расценивается мною как возможность использования перегрузки операторов в {$MODE DELPHI}
Но по странному стечению обстоятельств, данный код:

Код: Выделить всё

program test;

{$MODE DELPHI} // без этой штуки перегрузка операторов работает, но отказаться от неё не в силах

type
  TVec2f = object
    x, y: Single;
  end;

operator + (a, b: TVec2f) Result: TVec2f;
begin
  Result.x := a.x + b.x;
  Result.y := a.y + b.y;
end;

var
  a, b: TVec2f;
begin
  a.x := 0; a.y := 1;
  b.x := 2; b.y := 3; 
  writeln((a + b).x);
end.

Вызывает ошибку компиляции:
test.dpr(10,10) Fatal: Syntax error, "=" expected but "+" found

Это такая недокументированная фитча? Как лечить?
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

"Standard Result symbol" означает, что объявлять его не надо.
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

Не важно что оно там означает, по контексту явно видно, что поддержка перегрузки операторов в режиме DELPHI имеется, а на деле выходит обратное. Компилятор 2.2.0.
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

FPC 2.3.1 этот код также не компилирует, поэтому пришлось использовать {$MODE OBJFPC} до разъяснения ситуации.
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

Напишите в багтрекер.
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

На freepascal.org сослались на ошибку в reference )
Ответить