Ich bin in einem Projekt (eigentlich für Freepascal) über folgenden Code gestolpert (vereinfacht):
Delphi-Quellcode:
interface
type
TBasisSocket = class
end;
TNeuerSocket = class(TBasisSocket)
public
function MachWas: Integer;
end;
TBasisKlasse1 = class
private
FSocket: TBasisSocket;
public
constructor Create;
destructor Destroy; override;
end;
TNeueKlasse = class(TBasisKlasse1)
public
procedure Irgendwas;
end;
implementation
procedure TNeuerSocket.MachWas;
begin
Result := FurchtbarWichtigeBerechnung * 3;
end;
constructor TBasisKlasse1.Create;
begin
FSocket := TBasisSocket.Create;
end;
destructor TBasisKlasse1.Destroy;
begin
FSocket.Free;
inherited Destroy;
end;
procedure TNeueKlasee.Irgendwas;
var
MySock: TNeuerSocket absolute FSocket;
begin
...
end;
Ich verwende bei Freepascal den
SVN-Tree (also Version 2.3.1). Seit einer mir unbekannten Revision meldet der Compiler nun, dass "absolute" nur bei VAR- oder CONST-Werten verwendet werden darf.
Mein Verständnis bzgl. "absolute" sollte folgenden Code als identisch ansehen:
Delphi-Quellcode:
procedure TNeueKlasee.Irgendwas;
var
MySock: TNeuerSocket;
begin
MySock := TNeuerSocket(FSocket);
...
end;
Bitte korrigiert mich, falls ich falsch liege.