Nested classes

Top  Previous  Next

New features since Delphi 7 > Nested classes

The possibility to work with nested classes is new since Delphi 7. Here an example from:

 

http://docwiki.embarcadero.com/RADStudio/Rio/en/Nested_Type_Declarations

 

 

type

      TOuterClass = class

       strict private

          myField: Integer;

 

       public

          type

             TInnerClass = class

              public

                myInnerField: Integer;

                procedure innerProc;

             end;

 

         procedure outerProc;

       end;

 

implementation

 

procedure TOuterClass.TInnerClass.innerProc;

begin

  // ...

end;

 

procedure foo;

var

   x: TOuterClass;

   y: TOuterClass.TInnerClass;

 

begin

   x := TOuterClass.Create;

   x.outerProc;

   //...

   y := TOuterClass.TInnerClass.Create;

   y.innerProc;

end;   

 

 

Delphi2C# converts this to:

 

class TOuterClass : public System::TObject

{

  typedef System::TObject inherited;

  

private:

  int myField;

public:

 

  class TInnerClass : public System::TObject

  {

    typedef System::TObject inherited;

    

  public:

    int myInnerField;

    void innerProc();

    void InitMembers(){myInnerField = 0;}

public:

    TInnerClass() {InitMembers();}

  };  

  void outerProc();

  void InitMembers(){myField = 0;}

public:

  TOuterClass();

};

 

TOuterClass::TOuterClass() {InitMembers();}

 

 

 

void TOuterClass::TInnerClass::innerProc()

{

 

  // ...

}

 

void foo()

{

  TOuterClass* x = nullptr;

  TOuterClass::TInnerClass* y = nullptr;

  x = new TOuterClass();

  x->outerProc();

   //...

  y = new TOuterClass::TInnerClass();

  y->innerProc();

}

 

 



This page belongs to the DelphiXE2Cpp11 Documentation

DelphiXE2Cpp11 home  Content