delphi – 如何为相互依赖的记录定义隐式转换操作符?
发布时间:2020-12-15 10:08:13  所属栏目:大数据  来源:网络整理 
            导读:我在Delphi 2006中使用操作符重载记录(请不要通过告诉我不要回答这个问题) 我有两个记录类型,隐式运算符重载.它们都只是在实现模块,而不是通过界面暴露出来. 我的问题是,现在他们是相互依赖的,我不知道如何将第二个类型声明为编译器.我知道如何使用函数,过程
                
                
                
            | 我在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;解决方法
 您不能有记录类型的转发声明.在第二个类型中定义两个隐式运算符: 
  
  
  type
  TMyRec1 = record
    Field1 : Integer;
  end;
  TMyRec2 = record
    Field2: Integer;
    class operator Implicit(a: TMyRec2): TMyRec1;
    class operator Implicit(a: TMyRec1): TMyRec2;
  end;从the help起: 
 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
相关内容
- Delphi中拖动无边框窗口的5种方法
- Perl Getopt ::长相关问题 – 互斥命令行参数
- java – 启动spring web mvc应用程序时出现异常
- 可以在Delphi XE中使用“未使用”类
- 文件相似性判断 -- 超级特征值(super feature)
- 大数相乘的算法(instructed by Western University Prof.S
- 调用约定(pascal,fastcall,stdcall,thiscall,cdecl)区别等
- 如何找到For Each(VB.NET)中的最后一个循环?
- perl – 当文本小部件中的光标位置发生变化时,自动调用子例
- astilectron之Go语言golang的图形界面
