Anonymous structure

ZombineDev via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Apr 19 13:19:37 PDT 2016


On Tuesday, 19 April 2016 at 20:18:07 UTC, ZombineDev wrote:
> On Tuesday, 19 April 2016 at 17:16:00 UTC, Tofu Ninja wrote:
>> On Tuesday, 19 April 2016 at 16:16:39 UTC, ZombineDev wrote:
>>> On Monday, 18 April 2016 at 23:00:42 UTC, captaindet wrote:
>>>> On 2016-04-18 14:12, Tofu Ninja wrote:
>>>>> Also is there a way to have a named substructure, not a 
>>>>> nested structure
>>>>> but something to just add an additional name, maybe 
>>>>> something like
>>>>> struct a{
>>>>>      struct{
>>>>>          int x;
>>>>>          int y;
>>>>>          int z;
>>>>>      } b;
>>>>> }
>>>>
>>>> not sure what you mean by "named substructure, not a nested 
>>>> structure" but this works:
>>>>
>>>> struct Outer{
>>>> 	struct Inner{
>>>> 		int x;
>>>> 		int y;
>>>> 		int z;
>>>> 	}
>>>> 	Inner inner;
>>>> 	int a;
>>>> }
>>>>
>>>> Outer outer;
>>>> outer.a = 7;
>>>> outer.inner.y = 42;
>>>> //  outer.x = 13; //fails
>>>>
>>>> writeln(outer);
>>>
>>> There's another way:
>>> http://forum.dlang.org/post/n3q9vn$1l8g$1@digitalmars.com
>>
>> How is that supposed to work here?
>
> struct A
> {
>     template _b()
>     {
>         int x, y, z;
>     }	
>     alias b = _b!();	
> }
>
> void main()
> {
>     import std.stdio;
> 	
>     auto a = A();
>     a.b.x = 5;
>
>     writeln(a.b.x); // prints 5
>     //writeln(a.b); // Error: expression has no value
> }

Also functions defined in _b can access members of A.


More information about the Digitalmars-d-learn mailing list