[fpc-pascal] Polymorphism question
dhkblaszyk at zeelandnet.nl
dhkblaszyk at zeelandnet.nl
Fri Mar 3 08:52:36 CET 2006
(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.
More information about the fpc-pascal
mailing list