Przeładowywanie operatorów.

0

Potrzebuję użyć przeładowywania operatorów (na potrzeby zniesienia musu grupowania atrybutów i węzłów w http://4programmers.net/Forum/Spolecznosc/Projekty/273661-treestructinfodsl_-_domain_specific_language_dla_tsi_w_object_pascalu?view=unread)

Z tego co widzę, wraz z http://wiki.freepascal.org/FPC_New_Features_2.6.0#Advanced_record_syntax powinienem móc używać tego, co przy rekordach oferuje delphi (artykuł wskazany przez wiki: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Operator_Overloading_(Delphi))

program ideone;
{$mode objfpc}{$H+}    

type TRecord = record
	class operator Implicit(Foo: Integer): TRecord;
end;


class operator TRecord.Implicit(Foo: Integer): TRecord;
begin
  //...
end;

begin
end.

http://ideone.com/gAGsKk

Niestety, nawet najprostsza próba odrzucana jest przez Fatal: Syntax error, "identifier" expected but "CLASS" found.
Jak poprawnie przeładowywać operatory?

3

Używasz {$mode objfpc}, a w tym trybie Free Pascal ma własną składnię definiowania operatorów.
http://www.freepascal.org/docs-html/ref/refch15.html#x207-22900015

(uprzedzając pytania "a dlaczego jest inaczej" odpowiadam, że FPC było pierwsze, to ludzie od Delphi się nie dostosowali)

0

Tak na marginesie - przeładowywanie operatorów dla rekordów z użyciem słowa Class to WTF - co ma piernik do wiatraka? Delphi w tym przypadku ma niestety taki kwiatek w składni; Składnia przeładowywania operatorów dla Free Pascala na szczęście wygląda normalnie, raz że nie używa się keywordów dla klas, a dwa - podaje się po prostu operator, zamiast jego nazwy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1