Overload error in Delphi

For some reason I get this error "[DCC Error] MyFile.pas (52): E2137 Method 'Assign' not found in base class". Here is a snipit of my Assign routines that worked great until I added another one, the last 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;

      

+3


source to share


2 answers


When you use override

, you are saying that you are overriding the virtual method with the same signature inherited from the parent class. If the parent class does not have a virtual method with this signature, then the compiler will rightly complain that it cannot find it.



Check the ancestor classes to make sure the method actually exists. If it doesn't exist, don't put a child in the class override

.

+5


source


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

      

I think this is a mistake, you are making two equal parameters of TMyClass. Use somelike



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

      

-3


source







All Articles