Re: Accessing members of an array of a class with map.

2016-09-30 Thread Ave via Digitalmars-d-learn
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.

2016-09-30 Thread Jonathan M Davis via Digitalmars-d-learn
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.

2016-09-30 Thread Ave via Digitalmars-d-learn

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?