[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