Accessing this of containing class

Steven Schveighoffer schveiguy at yahoo.com
Thu Feb 3 05:29:28 PST 2011


On Thu, 03 Feb 2011 03:43:43 -0500, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Thursday 03 February 2011 00:38:08 Jacob Carlborg wrote:
>> On 2011-02-03 07:21, Jonathan M Davis wrote:
>> > On Wednesday 02 February 2011 21:26:00 Mandeep Singh Brar wrote:
>> >> Hi,
>> >>
>> >> Is there a method to access this reference of the container class
>> >> from an inner class. i.e.
>> >> class A {
>> >> class B {
>> >>
>> >>     methodM() {
>> >>
>> >>        callAnotherM(A::this or A.this);
>> >>
>> >>     }
>> >>
>> >> }
>> >> }
>> >
>> > The outer class is referenced via the property outer. However, if the
>> > inner class is static, then it has no such property and is not tied  
>> to a
>> > specific instance of the outer class. In such a case, it can access  
>> the
>> > private members of an instance of the outer class, but it's not tied  
>> to
>> > an particular instance. Non-static inner classes (like yours above),
>> > however, _are_ tied to a particular instance of the outer class, and
>> > they have the outer property which is the this of the outer class.
>> >
>> > - Jonathan M Davis
>>
>> Just to add a note, you have to access the property via "this":
>>
>> this.outer
>
> That, I did not know. But I've never actually used an inner class in D  
> thus far.
> I just read what TDPL says on it, and obviously I missed that point.  
> Thanks.

I have noticed that, is that a bug?  I always thought it strange, since  
outer is a keyword, that you need to do this.outer.

-Steve


More information about the Digitalmars-d-learn mailing list