Inner struct accessing host member
    Philippe Sigaud via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Aug  5 22:53:54 PDT 2014
    
    
  
Era:
>  broken_b.foo(); //i_a is accessible invisibly because 
> overridden or transformed assuming it would be converted or 
> copied/moved as appropriate.
>
>  return b; //if a is a local variable then b becomes invalid 
> even though it's a struct.
>  return i_b; //same as return b
>  return broken_b; //same as above two cases.
I see. I didn't know one could create an A.B 'outside'. I saw 
inner types as Voldemort types, but that is true only for inner 
structs in functions.
>  Now a current way to make it safe while still leaving it 
> structs could be passing a reference to either the outer struct 
> or the variable in question. For simplicity it would probably 
> be the struct.
(...)
>  Or less safe is to use a pointer and assign it when b 
> instantiates to point back to A.. But if you pass B around 
> without A and A goes out of scope... same problem...
>
>  Maybe i'm over-thinking it.
I already tried to propagate a ref through A's methods, but that 
made a mess: I have lots of methods, which have all to transmit 
this ref, only for *one* of them being able to update it.
Thanks for you explanations :)
I'm now using classes and inner classes. I'm not fond of classes, 
but that's working correctly.
    
    
More information about the Digitalmars-d-learn
mailing list