How to access private variable of outer class from an inner struct

thebluepandabear therealbluepandabear at protonmail.com
Sun Jan 15 12:44:51 UTC 2023


On Sunday, 15 January 2023 at 12:37:43 UTC, Paul Backus wrote:
> On Sunday, 15 January 2023 at 12:26:15 UTC, thebluepandabear 
> wrote:
>> If I have the following code:
>>
>> ```D
>> class X {
>>     private int num;
>>
>>     struct Y {
>>         // how to access num?
>>     }
>> }
>> ```
>>
>> How would I access `num` from `Y`?
>>
>> Whenever I try to I get a compilation error.
>>
>> I believe that it's possible for nested/inner classes, but I 
>> don't know if it's possible for structs.
>>
>> Help would be apprciated.
>
> I don't think this works for structs. As a workaround, you give 
> your struct an explicit reference to the outer class, like this:
>
> ```D
> class X {
>     private int num;
>
>     struct Y {
>         X outer;
>         int fun() { return outer.num; }
>     }
> }
> ```

Thanks.

How will the variable `outer` become the reference to the current 
`X` object (if that makes sense?). Does the compiler do it 
automatically?


More information about the Digitalmars-d-learn mailing list