On Sat, Jan 15, 2011 at 6:30 PM, Andrew Haines <andrewd...@aol.com> wrote:

> On 01/14/11 14:38, Torsten Bonde Christiansen wrote:
> > Hi List.
> >
> > Is it possible to jump a couple of levels in the inherited hierarchy
> > when calling "inherited" on a method?
> >
> > A small example of what i'm trying to achieve below (and don't mind the
> > incomplete TB class implementation).
> >
> > Kind regards,
> > Torsten Bonde Christiansen.
> >
> > ============================
> >
> > TA = class
> >   procedure DoSomething; virtual;
> > end;
> >
> > TB = class(TA)
> >   procedure DoSomething; override;
> > end;
> >
> > TC = class(TB)
> >   procedure DoSomething; override;
> > end;
> >
> > .....
> >
> > procedure TA.DoSomething;
> > begin
> >   ...
> > end;
> >
> > procedure TC.DoSomething;
> > begin
> >   inherited TA.DoSomething;  // This is not correct, but exemplifies
> > what i'm trying to achieve.
> > end;
> >
>
> I *think* I've done this before this way but test it to make sure it works:
>
> procedure TC.DoSomething:
> begin
>  (Self as TA).DoSomething;
> end;
>
>
The same vmt (virtual method table) used, so no matter how you call it, the
addresses point to new methods.

Max
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to