[fpc-pascal]Classes/Objects/Pointers / Pointer Help

Matt Emson memsom at interalpha.co.uk
Mon Feb 10 14:29:17 CET 2003


This is where Classes are better than objects... This will only work if
you don't reference any thing that is instantiated by the constructor,
i.e. all Methods and fields.

> ***
> type TmyObject = object
>   procedure test;
> end;

type
  TMyClass = class
    class procedure test;
  end;
 
> procedure TmyObject.test;
> begin
>    writeLn('test');
> end;

As is, but add 'class' prefix..
 
> procedure main;
> var
>   MyObject: TmyObject;
> begin
>   MyObject.Test;
> end;
> ***

No changes.

What you want is garbage collection, not a lack of
constructors/destructors... What you will get is VBPascal. Nasty.

You could try:

  IMyClass = interface
    procedure Test;
  end;

  TMyClass = class(TInterfacedObject, IMyClass)
    class function Get(): TMyClass;
    procedure Test;
  end;

Class function TMyClass.Get() : IMyClass;
Begin
  result := TMyClass.Create;
End;

Though this is quite nasty in itself too.


Matt






More information about the fpc-pascal mailing list