[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