On 08/05/14 22:32, Philippe Sigaud via Digitalmars-d-learn wrote:
> I'd have thought that this would work:
> 
> struct A
> {
>     int[] i;
>     B b;
> 
>     struct B
>     {
>         void foo() { i ~= 1;}
>     }
> }
> 
> void main()
> {
>     A a;
>     a.b.foo();
> }
> 
> But the compiler tells me 'need this for i of type int[]'.
> Is there any way I can gain access on i inside B?

Not directly, but as you ask for /any/ way -- yes:

   struct B
   {
     void foo() { outer.i ~= 1; }
     ref A outer() inout @property { return 
*cast(A*)(cast(void*)&this-A.b.offsetof); }
   }

Note this will work only as long as you have just one B
instance in A and B is never created or copied outside of A.

artur

Reply via email to