[gelöst]: Records Class Operator und Überladen möglich?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
musicones
Beiträge: 35
Registriert: Di 8. Sep 2009, 09:13
OS, Lazarus, FPC: Win 10 (L 1.6.2 FPC 3.0.0)
CPU-Target: 64Bit

[gelöst]: Records Class Operator und Überladen möglich?

Beitrag von musicones »

Hallo,

ich habe hier und im englischen Forum, bzw. Suchmaschine / Freepascal Wiki versucht mich etwas vorab zu erlesen,
ob ich im aktuellen Lazarus 1.6.3 / FPC 3 Class Operator in Records nutzen und überladen kann.

Gedacht ist es wie folgt:

Projektdatei: {$mode objfpc}{$H+}
In der Unit: {$MODESWITCH ADVANCEDRECORDS}


Code: Alles auswählen

 
TMeinRecord = record
private
  FValue: UInt64;
...
private
  property Value: UInt64 read FValue;
public
    // Operator overloading
    class operator Implicit(const AValue: UInt64): TMeinRecord;
    class operator Implicit(const AValue: TMeinRecord): UInt64;
...
end;
 


Compiler hängt sich in der Zeile class operator... mit folgender Meldung auf:

Code: Alles auswählen

 
(121,28) Error: It is not possible to overload this operator. Related overloadable operators (if any) are:
(121,66) Error: Impossible operator overload
 


Das geht so weiter für weitere operatoren die ich einführen/überladen wollte.

Jetzt meine Frage, mache ich einfach was falsch wie ich es umsetze, oder ist es einfach grundsätzlich nicht möglich?
Ich weiß Operatoren können im Implementation teil ausserhalb der Klasse/Record direkt implementiert und dann später genutzt werden. Das hatte ich gesehen.
Aber irgendwo hatte ich gelesen, dass es so wie in Delphi innerhalb von Records in FPC ab Version 2.5.1 auch gehen müsste, allerdings waren die Posts schon älter
und die FPC war da nur im trunk und nicht als release erhältlich, also alles sehr vage und es gab auch keine Beispiele.

Danke und Gruß
Antonio
Zuletzt geändert von musicones am Di 10. Jan 2017, 11:04, insgesamt 1-mal geändert.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Records Class Operator und Überladen möglich?

Beitrag von Michl »

Mit FPC 3.0.0 geht es nicht. Mit FPC 3.1.1 Trunk geht es hier (mode Delphi).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

musicones
Beiträge: 35
Registriert: Di 8. Sep 2009, 09:13
OS, Lazarus, FPC: Win 10 (L 1.6.2 FPC 3.0.0)
CPU-Target: 64Bit

Re: [gelöst]: Records Class Operator und Überladen möglich?

Beitrag von musicones »

Danke für die Info.
Ok, ich habe gerade erst das Release eingerichtet.
Ich werde wohl zum nächsten Release warten, um das so umzusetzen.

Antworten