All TObject descendants have a VMT. The destructor is virtual, BTW. -Flávio
On Thu, May 27, 2010 at 11:01 AM, Yann Bat <batyann...@gmail.com> wrote: > Hi, > > I don't understand why compilation of the program below failed in fpc > and objfpc mode. In tp and delphi mode it works as expected but in fpc > and objfpc mode the compiler complains : > > blob.pas(17,3) Error: Constants of objects containing a VMT aren't allowed > blob.pas(17,3) Fatal: Syntax error, ";" expected but "(" found > > Since my object has no virtual methods why a VMT ? > > Thanks. > > > {$mode fpc} > program Blob; > > type > TBlob = object > private > fId : LongInt; > > public > constructor Init; > function Id: LongInt; > end; > > PBlob=^TBlob; > > const > NullBlob : TBlob = (fId: 0); > > {=== TBlob ===} > constructor TBlob.Init; > begin > fId:=Random(1024) + 1; > end; > > function TBlob.Id; > begin > Id:=fId; > end; > > var > B : TBlob; > begin > B:=NullBlob; > WriteLn('B : ', B.Id); > > B.Init; > WriteLn('B : ', B.Id); > end. > _______________________________________________ > fpc-pascal maillist - fpc-pas...@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal