Re: Accessing members of an array of a class with map.
On Friday, 30 September 2016 at 19:31:55 UTC, Jonathan M Davis wrote: On Friday, September 30, 2016 19:04:11 Ave via Digitalmars-d-learn wrote: [...] The first example is segfaulting, because you never gave the variable, test, a value. It's null when you try and access its arrB member. - Jonathan M Davis Hah wow. Can't believe I even retyped that whole thing and didn't see it. Thanks.
Re: Accessing members of an array of a class with map.
On Friday, September 30, 2016 19:04:11 Ave via Digitalmars-d-learn wrote: > An example of what I'm trying to do: > > import std.stdio; > import std.container; > import std.algorithm; > class Aa > { > Array!B arrB; > } > > class Bb > { > string name; > > } > void main() > { > Aa test; > auto c=new Bb; > c.name="asdf"; > test.arrB.insert(c); > auto d=new Bb; > d.name="1234"; > test.arrB.insert(d); > writeln(test.arrB[].map!(x=>x.name); > } > I was able to get this to compile,but it segfaults. > If I do this however: > > import std.stdio; > import std.container; > import std.algorithm; > class Bb > { > string name; > } > void main() > { > Array!B arrB; > auto c=new Bb; > c.name="asdf"; > arrB.insert(c); > auto d=new Bb; > d.name="1234"; > arrB.insert(d); > writeln(arrB[].map!(x=>x.name); > } > It will compile and work without seg faulting. What am I doing > wrong in my first case that's causing the program to seg fault? The first example is segfaulting, because you never gave the variable, test, a value. It's null when you try and access its arrB member. - Jonathan M Davis
Accessing members of an array of a class with map.
An example of what I'm trying to do: import std.stdio; import std.container; import std.algorithm; class Aa { Array!B arrB; } class Bb { string name; } void main() { Aa test; auto c=new Bb; c.name="asdf"; test.arrB.insert(c); auto d=new Bb; d.name="1234"; test.arrB.insert(d); writeln(test.arrB[].map!(x=>x.name); } I was able to get this to compile,but it segfaults. If I do this however: import std.stdio; import std.container; import std.algorithm; class Bb { string name; } void main() { Array!B arrB; auto c=new Bb; c.name="asdf"; arrB.insert(c); auto d=new Bb; d.name="1234"; arrB.insert(d); writeln(arrB[].map!(x=>x.name); } It will compile and work without seg faulting. What am I doing wrong in my first case that's causing the program to seg fault?