gpt4 book ai didi

delphi - 是否有一种解决方法可以使类运算符适用于内置类型

转载 作者:行者123 更新时间:2023-12-03 15:24:56 25 4
gpt4 key购买 nike

我可以使用中间保存记录对字符串使用类运算符。
这样我就可以这样隐式转换内置类型了。

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.

我想做一些类似的事情:

var
input: string;
output: integer;

begin
input:= '42';
output:= input; //Class operator magic
WriteLn(IntToStr(output));
ReadLn;
end.

根据在线帮助:

Note: Class and record helpers do not support operator overloading.

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

是否有一种解决方法可以在不使用中间类型的情况下实现内置类型的隐式转换?

最佳答案

记录和类帮助器是扩展现有类型的方法范围的唯一方法。并且助手不承认运算符重载。

唯一可以定义重载运算符的点是在定义类型时。

关于delphi - 是否有一种解决方法可以使类运算符适用于内置类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30126479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com