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@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal