Something like this ;): type TDepth3 = class public mValue : integer;
constructor Create; destructor Destroy; override; end; constructor TDepth3.Create; begin mValue := 666; end; destructor TDepth3.Destroy; begin end; type TDepth2 = class public mDepth3 : TDepth3; constructor Create; destructor Destroy; override; end; constructor TDepth2.Create; begin mDepth3 := TDepth3.Create; end; destructor TDepth2.Destroy; begin mDepth3.Free; end; type TDepth1 = class public mDepth2 : TDepth2; constructor Create; destructor Destroy; override; end; constructor TDepth1.Create; begin mDepth2 := TDepth2.Create; end; destructor TDepth1.Destroy; begin mDepth2.Free; end; procedure Demo1; var mDepth1 : TDepth1; vValue : integer; begin mDepth1 := TDepth1.Create; vValue := mDepth1.mDepth2.mDepth3.mValue; writeln( 'vValue: ', vValue ); mDepth1.Free; end; I consider .mDepth2.mDepth3 nested classes ;) Bye, Skybuck. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel