Read down the first page, the section "Objects - Dynamic Variables" - all will become clear.

By avoiding the virtual methods, you can keep your objects static, all stored on stack, no need for constructors. I personally find very useful for my projects.

Find fixed example below. Hope it helps,

Stefan

// http://wiki.freepascal.org/Programming_Using_Objects
//Objects - Dynamic Variables

type
  TA = object
    constructor Init();
    procedure DoThis; virtual;
  end;

procedure TA.DoThis;
begin
  writeln('TA.DoThis');
end;

type
  PTB=^TB;
  TB = object (TA)
    procedure DoThis; virtual;
  end;

procedure TB.DoThis;
begin
  writeln('TB.DoThis');
end;

constructor TA.Init();
begin
  inherited;
end;

var

  obj: PTB;
begin
  obj:=New(PTB,Init());
  obj^.DoThis;
end.

On 6/27/19 4:17 PM, Ryan Joseph wrote:
Why do I get a runtime error with this?

==============================

{$mode objfpc}

program test;

// http://wiki.freepascal.org/Programming_Using_Objects
// http://wiki.freepascal.org/Programming_Using_Objects_Page_2

type
   TA = object
     procedure DoThis; virtual;
   end;

procedure TA.DoThis;
begin
   writeln('TA.DoThis');
end;

type
   TB = object (TA)
     procedure DoThis; virtual;
   end;

procedure TB.DoThis;
begin
   writeln('TB.DoThis');
end;

var
   obj: TB;
begin
   obj.DoThis;
end.


Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


--
_______________________________________________________
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to