On Monday, 4 December 2017 at 14:01:08 UTC, Steven Schveighoffer wrote:
On 12/3/17 2:38 AM, Jonathan M Davis wrote:
On Sunday, December 03, 2017 01:05:00 Nick Sabalausky via Digitalmars-d-
learn wrote:
Is this even possible? My attempts:

class Outer {
   struct Inner {
       void foo() {
           // Error: no property 'outer' for type 'Inner'
           Outer o = this.outer;

           // Error: cannot implicitly convert expression
           // this of type Inner to testNested.Outer
           Outer o = this;
       }
   }
}

As I understand it, there is no outer for nested structs, only nested classes. So, you'll either have to use a nested class or explicitly pass a
reference to the outer class to the nested struct.

Yes, for structs inside structs or classes, there is no 'outer' member.

However, there is a hidden context member in a struct if it's nested inside a function. In that case, you must label the struct "static"

The only reason inner classes have outer pointers to their "owner" class instance, is for those familiar with Java programming style (specifically, IIRC, it was to write dwt, which was a port of jwt). I believe Walter mentioned elsewhere recently, he would have done things differently today.

-Steve

Yes! Don't forget the 'static' otherwise you'll get some odd errors.

Reply via email to