🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #93165

Re: Przeciazanie jak w delphi

#93165
From: Wiktor S.
Date: Wed, 13 Apr 2011 20:42
77 lines
2368 bytes
Można zrobić operatory na interfejsie, a klasę zrobić dziedziczącą po 
TInterfacedObject.
Trzeba jednak pamiętać, by operować na zmiennych "interfejsowych" a nie 
"klasowych".

=======
{$mode objfpc}

type IKlasa = interface
        function getvalue:integer;
        procedure setvalue(v:integer);
        property value:integer read getvalue write setvalue;
     end;

type TKlasa = class(TInterfacedObject,IKlasa)
       fvalue:integer;
       constructor Create(x:integer);
       destructor Destroy; override;
       function getvalue:integer;
       procedure setvalue(v:integer);
       property value:integer read getvalue write setvalue;
     end;

constructor TKlasa.Create(x:integer);
begin
  writeln('konstruktor ',x);
  value:=x;
end;

destructor TKlasa.Destroy;
begin
  writeln('destruktor ',value);
end;

procedure TKlasa.setvalue(v:integer);
begin
  fvalue:=v;
end;

function TKlasa.getvalue:integer;
begin
  getvalue:=fvalue;
end;

operator +(a,b:IKlasa):IKlasa;
begin
  result:=TKlasa.Create(a.value + b.value);
end;

var a,b,c,d:IKlasa;

begin
  a:=TKlasa.Create(2);
  b:=TKlasa.Create(3);
  c:=TKlasa.Create(4);
  d:=a+b+c;
  writeln('wynik: ',d.value);
end.

=======

konstruktor 2
konstruktor 3
konstruktor 4
konstruktor 5
konstruktor 9
wynik: 9
destruktor 5
destruktor 2
destruktor 3
destruktor 4
destruktor 9



-- 
Azarien
Technical Details
Message-ID: <io9pod$3lv$2@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail
References: <io4i7i$2dr$2@news.onet.pl> <129b.0000009c.4da5d7f3@newsgate.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail
From: "Wiktor S." <wswiktorSP@Mpoczta.fm>
Newsgroups: pl.comp.lang.pascal
Subject: Re: Przeciazanie jak w delphi
Date: Wed, 13 Apr 2011 22:42:09 +0200
Organization: http://onet.pl
Lines: 78
Message-ID: <io9pod$3lv$2@news.onet.pl>
References: <io4i7i$2dr$2@news.onet.pl> <129b.0000009c.4da5d7f3@newsgate.onet.pl>
NNTP-Posting-Host: 109.243.136.59
Mime-Version: 1.0
X-Trace: news.onet.pl 1302882894 3775 109.243.136.59 (15 Apr 2011 15:54:54 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Fri, 15 Apr 2011 15:54:54 +0000 (UTC)
In-Reply-To: <129b.0000009c.4da5d7f3@newsgate.onet.pl>
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Windows Mail 6.0.6002.18197
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.17514
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit