Delphi 中的重载过程出错

Error overloading procedure in Delphi

出于某种原因,我现在收到此错误“[DCC 错误] MyFile.pas(52):E2137 方法 'Assign' 未在基 class 中找到”。这是我的 Assign 程序的一个片段,在我添加一个之前工作正常,最后一个 Assign。

procedure Assign(MyClass: TMyClass); overload; override;
procedure Assign(MyClass: ThisService.MyClass); overload; override;
procedure Assign(MyClass: ThatService.MyClass); overload; override;
procedure Assign(MyClass: TXMLMyClass); overload; override;
procedure Assign(MyClass: pbStruct1Messages.TMyRecord); overload; override;
procedure Assign(MyClass: pbStruct2Messages.TMyRecord); overload; override;
procedure Assign(MyClass: pbStruct1Messages.TMyClass); overload; override;
procedure Assign(MyClass: pbStruct2Messages.TMyClass); overload; override;

我认为这是错误的,你使两个等于参数 MyClass。使用类似

procedure Assign(MyClass: pbStruct1Messages); overload; override;
procedure Assign(MyClass: pbStruct2Messages); overload; override;

当您使用 override 时,您是说您正在覆盖具有从父 class 继承的相同签名的虚拟方法。如果父 class 没有带有该签名的虚方法,那么编译器会正确地抱怨找不到它。

检查祖先 classes 以确认该方法确实存在。如果不存在,则不要将后代 class 中的那个标记为 override.