On Mon, 27 Dec 2010 08:54:37 -0500, d coder <dlang.co...@gmail.com> wrote:

Greetings All

I have a situation where I have a struct nested inside a class. I
would like to make the enclosing class' members visible inside the
nested struct's constructor. I see that such preposition is feasible
for nested classes, but not for nested structs. Why so?

A struct nested in a class does not have a hidden "outer" pointer as a nested class does. It's because a struct is generally more bare-bones than a class (which has loads of hidden pieces: vtable, interfaces, classinfo, etc.). Also, instantiating such a struct does not tie it to a class instance.


Are there some alternative constructs which could give me this
behavior for nested constructs?

You need to implement this behavior on your own:

class C
{
  struct S
  {
    private C _outer;
this(C c) { this._outer = c; _outer.x = 5;} // access enclosing class instance via _outer.
  }

  int x;
}

-Steve

Reply via email to