[fpc-pascal]using 'overload'
    Nikolay Nikolov 
    nickysn1983 at netscape.net
       
    Sun Apr  6 14:09:42 CEST 2003
    
    
  
Is it necessary to use the 'overload' directive in objfpc mode?
E.g. this code doesn't work:
{$MODE objfpc}
Program Test2;
Type
  TBaseFunClass = Class(TObject)
    Procedure DoStuff(a : Integer; b : Integer); Virtual; Abstract;
    Procedure DoStuff(a : Integer);
  End;
  TFunClass = Class(TBaseFunClass)
    Procedure DoStuff(a, b : Integer); Override;
  End;
Procedure TBaseFunClass.DoStuff(a : Integer);
Begin
  DoStuff(a, 0);
End;
Procedure TFunClass.DoStuff(a, b : Integer);
Begin
  Writeln('TFunClass.DoStuff(', a, ',', b, ')');
End;
Var
  q : TFunClass;
Begin
  q := TFunClass.Create;
  q.DoStuff(5);
  q.Destroy;
End.
fpc 1.1 says:
...
test2.pas(30,14) Error: Wrong number of parameters specified
test2.pas(10,15) Hint: Found declaration: TFunClass.DoStuff(Longint,Longint)
test2.pas(33) Fatal: There were 1 errors compiling module, stopping
fpc 1.0.6 gives the same error, only without the hint :-)
When I put 'overload;' everywhere it works. Is it necessary to use 
'overload;' everywhere in objfpc mode or it's just a 'feature' of the 
compiler. And what's the reason why Borland introduced the 'overload' 
directive for function overloading?
    
    
More information about the fpc-pascal
mailing list