[fpc-pascal] how to simulate abstract properties
Graeme Geldenhuys
graemeg at opensoft.homeip.net
Mon Aug 17 09:12:53 CEST 2009
Marc Santhoff wrote:
>
> the compiler runs and throws no error. Fine, but this way every class
Because you did not instantiate any instances of that class. Here is the
output after compiling my sample program with FPC 2.2.5
===============================
$ fpc test1.pas
Free Pascal Compiler version 2.2.5 [2009/05/28] for i386
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for i386
Compiling test1.pas
test1.pas(31,24) Warning: Constructing a class "TDerived2" with abstract
methods
Linking test1
35 lines compiled, 0.1 sec
1 warning(s) issued
===============================
It clearly shows the error, which is correct. Just declaring a class
with abstract methods doesn't mean the compiler must throw an error.
TDerived2 might have another class deriving from it, which adds the getA
implementation.
As far as I can see, the compiler is doing everything correctly.
===========[ complete sample application ]==================
program test1;
{$mode objfpc}{$H+}
type
TBase = class(TObject)
private
function getA: integer; virtual; abstract;
public
property A:integer read getA;
end;
TDerived = class(TBase)
private
function getA: integer; override;
end;
TDerived2 = class(TBase)
end;
function TDerived.getA: integer;
begin
result := 99;
end;
var
a: TDerived;
b: TDerived2;
begin
a := TDerived.Create;
b := TDerived2.Create;
a.Free;
b.Free;
end.
==================[ end ]=======================
Regards,
- Graeme -
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
More information about the fpc-pascal
mailing list