是否有解决方法使类操作符适用于内置类型

Joh*_*ica 4 delphi operator-overloading

我可以使用类操作符来使用中间保持记录.
这样我就可以隐式转换内置类型了.

program TestNewStringHelper; 
{$APPTYPE CONSOLE}
uses
  System.SysUtils;
type
  TStringRecord = record
  private
    Data: string;
  public
    class operator Implicit(const a: TStringRecord): Integer; inline;
    class operator Implicit(const a: string): TStringRecord; inline;
  end;

{ TStringRecord }

class operator TStringRecord.Implicit(const a: string): TStringRecord;
begin
  pointer(Result.Data):= pointer(a);
end;

class operator TStringRecord.Implicit(const a: TStringRecord): Integer;
begin
  Result:= StrToInt(a.Data);
end;

var
  input: TStringRecord;
  output: integer;

begin
  input:= '42';
  output:= input;
  WriteLn(IntToStr(output));
  ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)

我想做一些相反的事情:

var
  input: string;
  output: integer;

begin
  input:= '42';
  output:= input;  //Class operator magic
  WriteLn(IntToStr(output));
  ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)

根据在线帮助:

注意:类和记录助手不支持运算符重载.

http://qc.embarcadero.com/wc/qcmain.aspx?d=72253

是否有解决方法来实现内置类型的隐式转换而不使用中间类型?

Dav*_*nan 5

记录和类助手是扩展现有类型的方法范围的唯一方法.并且助手不承认运营商超载.

您可以定义重载运算符的唯一方面是定义类型.