Operator overloading wird in Helpern nicht unterstützt:
Folgendes compiliert und funktioniert. Da ist auch der class operator im Helper. Verstecktes feature
Delphi-Quellcode:
type
TTestRecord = record
value:Integer;
end;
TTestRecordHelper = record helper for TTestRecord
class operator Implicit(a: TTestRecord): string;
class operator Implicit(a: string): TTestRecord;
class operator Implicit(a: TTestRecord): Integer;
class operator Implicit(a: Integer): TTestRecord;
end;
class operator TTestRecordHelper.Implicit(a: TTestRecord): string;
begin
Result := inttostr(a.value);
end;
class operator TTestRecordHelper.Implicit(a: string): TTestRecord;
begin
Result.value := strtoint(a);
end;
class operator TTestRecordHelper.Implicit(a: Integer): TTestRecord;
begin
Result.value := a;
end;
class operator TTestRecordHelper.Implicit(a: TTestRecord): Integer;
begin
Result := a.value;
end;
var
lTestRecord:TTestRecord;
lString:string;
lInteger:Integer;
begin
lTestRecord := 1;
lString := lTestRecord;
WriteLn(lString);
lTestRecord := '2';
lInteger := lTestRecord;
WriteLn(inttostr(lInteger));
Readln;
end.