Delphi中的错误重载过程

时间:2015-04-29 13:04:20

标签: delphi override overloading

出于某种原因,我现在收到此错误' [DCC错误] MyFile.pas(52):E2137方法'分配'在基类中找不到'。这是我的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;

2 个答案:

答案 0 :(得分:5)

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

检查祖先类以确认该方法确实存在。如果它不存在,则不要使用override标记后代类中的那个。

答案 1 :(得分:-3)

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

我认为这是错误,你做两个等于参数的TMyClass。使用某些

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