Accessing outer class attribute from inner struct

Andre Pany via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Aug 29 03:03:48 PDT 2017


On Tuesday, 29 August 2017 at 08:30:24 UTC, Moritz Maxeiner wrote:
> On Tuesday, 29 August 2017 at 07:59:40 UTC, Andre Pany wrote:
>> On Monday, 28 August 2017 at 23:12:40 UTC, Moritz Maxeiner 
>> wrote:
>>>
>>> In both cases S doesn't inherently how about C, which means a 
>>> solution using default initialization is not feasible, as 
>>> S.init can't know about any particular instance of C.
>>> I don't think there's any way for you to avoid using a class 
>>> constructor.
>>
>> Thanks for the explanation. I now tried to use a class and use 
>> a static opIndex. But it seems from a static method you also 
>> cannot access the attributes of a outer class :)
>
> A nested class' outer property (when nested inside another 
> class) is a class reference, which means we not only require a 
> class instance of the outer class to reference, but also a 
> class instance of the nested class to store said class 
> reference to the other class in.
> A static class method (by definition) is invoked without a 
> class instance.
> The two are inherently incompatible.
>
>> [...]
>>
>> This seems like an unnecessary limitation...
>
> I can only recommend reading the language specification w.r.t, 
> nested classes [1] if it seems that way to you, because it is 
> not.
>
> [1] https://dlang.org/spec/class.html#nested

I think I found a solution which fulfills all goals but I have to 
try it out. A property method "Columns" will return an 
initialized struct "ColumnsArray" as proposed by you.
This should nicely work as string mixin. Thanks for your help.

Kind regards
André


More information about the Digitalmars-d-learn mailing list