Thread overview
"Class.this" equivalent ?
Jan 02, 2007
Dan
Jan 02, 2007
Alexander Panek
Jan 02, 2007
Dan
January 02, 2007
All,

How can I access a reference to an enclosing class in D? ... something similar to the following Java code:

class A {
  class B {
    A ref;
    B() { ref = A.this; }
  }
}
January 02, 2007
Dan wrote:
> All,
> 
> How can I access a reference to an enclosing class in D? ... something similar
> to the following Java code:
> 
> class A {
>   class B {
>     A ref;
>     B() { ref = A.this; }
>   }
> }

You can use the *outer* keyword to access the class wrapping a nested class.

Like:

class Outer
{
    class Inner
    {
	Outer foo()
	{
	    return this.outer;
	}
    }

    void bar()
    {
	Inner i = new Inner;
	assert(this == i.foo());
    }
}
January 02, 2007
== Quote from Alexander Panek (a.panek@brainsware.org)'s article
> Dan wrote:
> > All,
> >
> > How can I access a reference to an enclosing class in D? ... something similar to the following Java code:
> >
> > class A {
> >   class B {
> >     A ref;
> >     B() { ref = A.this; }
> >   }
> > }
> You can use the *outer* keyword to access the class wrapping a nested class.
> Like:
> class Outer
> {
>      class Inner
>      {
> 	Outer foo()
> 	{
> 	    return this.outer;
> 	}
>      }
>      void bar()
>      {
> 	Inner i = new Inner;
> 	assert(this == i.foo());
>      }
> }

Thanks.

--Dan