Thread overview
Accessing members of an array of a class with map.
Sep 30, 2016
Ave
Sep 30, 2016
Jonathan M Davis
Sep 30, 2016
Ave
September 30, 2016
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?
September 30, 2016
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

September 30, 2016
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.