Jump to content

Sam Witse

Members
  • Content Count

    3
  • Joined

  • Last visited

Posts posted by Sam Witse


  1. Hi Delphi addicts,

    I want to create an "inherited class property".

    - I define a class property in Master

    - Define a local getter in Master, because a getter must be static

    - Define an abstract class procedure, called by the getter

    - Implement the class procedure in Child

     

    Writing it in Delphi and compiling it, all goes well.

    When executing the code, the getter raises an abstract error when calling the class procedure.

     

    What am I missing?

    Is there a way to define inheritable polymorf class properties?

     

    unit Unit1;
    
    interface
    
    type
      TMaster = class
      private
        class function GetMasterId: integer; static; {MUST be a static method for a property getter}
      protected
        class function GetChildID: integer; virtual; abstract;
      public
        class property id: integer read GetMasterId ;
      end;
    
      TChild = class(TMaster)
      protected
        class function GetChildID: integer; override;
      end;
    
    implementation
    
    { TMaster }
    
    class function TMaster.GetMasterId: integer;
    begin
      result := GetChildID ;   { <= at this point I get an abstract error}
    end;
    
    { TChild }
    
    class function TChild.GetChildID: integer;
    begin
      result := 1
    end;
    
    end.
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      Edit1.Text := inttostr(TChild.id)  { <= Calling the Child's property}
    end;


     

×