[fpc-pascal] Polymorphism question

Rodrigo Palhano rodrigo at speedcase.com.br
Fri Mar 3 12:26:17 CET 2006


On Fri, 03 Mar 2006 04:52:36 -0300, <dhkblaszyk at zeelandnet.nl> wrote:

> (I sent this mail yesterday but somehow it didn't get trough, therefore a
> new try)
>
> I would like to declare a polymorph class. The class has several
> properties and it's the read and write specifiers that I want to be
> virtual abstract. So derived classes override the read and write
> specifiers. The problem however is that I get an EAbstractError. The
> property is still considered to be abstract according to the compiler. So
> what did I wrong? I have added an example below.
> Is it perhaps not allowed to use this construct? What would then be the
> best way?
> Darius
>
> <<example>>
>
> unit MyTest;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, ComCtrls, SysUtils;
>
> type
>   TCustomClass = class
>   private
>     //virtual mehods
>     function GetMyProperty: string; virtual; abstract;
>     procedure SetMyProperty(Value: string); virtual; abstract;
>   published
>
>     property MyProperty: string Read GetMyProperty Write SetMyProperty;
>   end;
>
>   TMyClass = class(TCustomClass)
>   private
>     FMyProperty: string;
>
>     function GetMyProperty: string; overload;
>     procedure SetMyProperty(Value: string); overload;
>   published
>     property MyProperty;
>   end;
>
> implementation
>
> function TMyClass .GetMyProperty: string;
> begin
>   Result := FMyProperty;
> end;
>
> procedure TMyClass .SetMyProperty(Value: string);
> begin
>   if Value = FMyProperty then
>     exit;
>
>   FMyProperty := Value;
> end;
> end.
>
>
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>

Try override instead of overload

-- 
Rodrigo Palhano
---------------------------------
Equipe SpeedCASE




More information about the fpc-pascal mailing list