我在Delphi 2006中使用记录类型的运算符重载。(请不要告诉我不要这样做)
我有两个记录类型,都重载了隐式运算符。它们只存在于模块的实现部分,没有通过接口暴露出来。
我的问题是,现在它们相互依赖,我不知道如何向编译器前置声明第二种类型。我知道如何对函数、过程和类进行前置声明,但不知道如何对记录进行。
以下是我尝试做的简化示例:
implementation
type
TMyRec1 = record
Field1 : Integer;
class operator Implicit(a: TMyRec2): TMyRec1; // <---- Undeclared Identifier here.
end;
TMyRec2 = record
Field2: Integer;
class operator Implicit(a: TMyRec1): TMyRec2;
end;
class operator TMyRec1.Implicit(a:TMyRec2): TMyRec1;
begin
Result.Field1 := a.Field2;
end;
class operator TMyRec2.Implicit(a:TMyRec2): TMyRec2;
begin
Result.Field2 := a.Field1;
end;