Thread overview
Forward Reference
Oct 09, 2014
Anibal
Oct 09, 2014
Njkp
Oct 10, 2014
Nimrod the Shlomo
Oct 09, 2014
ketmar
Oct 09, 2014
Anibal
October 09, 2014
Hi everyone,

I'm trying to something like a tree structure.

The following:

import std.container;
class Tree
{
        private SList!Tree subTree;
}

Produces: class Tree no size yet for forward reference.

How i should proceed in order to keep this declaration?

Thanks a lot!

PD: (You guys are incredibly quick to answer, that's awesome!)
October 09, 2014
On Thursday, 9 October 2014 at 19:04:56 UTC, Anibal wrote:
> Hi everyone,
>
> I'm trying to something like a tree structure.
>
> The following:
>
> import std.container;
> class Tree
> {
>         private SList!Tree subTree;
> }
>
> Produces: class Tree no size yet for forward reference.
>
> How i should proceed in order to keep this declaration?
>
> Thanks a lot!
>
> PD: (You guys are incredibly quick to answer, that's awesome!)

make a pointer list instead, which has a fixed size:
---
import std.container;
class Tree
{
        private SList!(Tree*) subTree;
}
---
October 09, 2014
On Thu, 09 Oct 2014 19:04:55 +0000
Anibal via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>
wrote:

> Hi everyone,
> 
> I'm trying to something like a tree structure.
> 
> The following:
> 
> import std.container;
> class Tree
> {
>          private SList!Tree subTree;
> }
> 
> Produces: class Tree no size yet for forward reference.
> 
> How i should proceed in order to keep this declaration?
do you really need single-linked list for that? D has dynamic arrays, which can be used instead.

  class Tree {
    private Tree[] subTree;
  }

you can append items to dynamic array with "~=", get it length with .length and so on.

seems that you trying to copy some C code (or writing in C
manner), amirite? it is possible to use D as "better C", but D has alot
more to offer. did you seen this excellent book:
http://ddili.org/ders/d.en/ ?
it will teach you some nice things which are absent in C. read it even
if you are seasoned C programmer. you'll see a joy of dynamic arrays,
slices, ranges and templates, nicely explained.


October 09, 2014
On Thursday, 9 October 2014 at 19:29:13 UTC, ketmar via Digitalmars-d-learn wrote:
> On Thu, 09 Oct 2014 19:04:55 +0000
> Anibal via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>
> wrote:
>
>> Hi everyone,
>> 
>> I'm trying to something like a tree structure.
>> 
>> The following:
>> 
>> import std.container;
>> class Tree
>> {
>>          private SList!Tree subTree;
>> }
>> 
>> Produces: class Tree no size yet for forward reference.
>> 
>> How i should proceed in order to keep this declaration?
> do you really need single-linked list for that? D has dynamic arrays,
> which can be used instead.
>
>   class Tree {
>     private Tree[] subTree;
>   }
>
> you can append items to dynamic array with "~=", get it length
> with .length and so on.
>
> seems that you trying to copy some C code (or writing in C
> manner), amirite? it is possible to use D as "better C", but D has alot
> more to offer. did you seen this excellent book:
> http://ddili.org/ders/d.en/ ?
> it will teach you some nice things which are absent in C. read it even
> if you are seasoned C programmer. you'll see a joy of dynamic arrays,
> slices, ranges and templates, nicely explained.

Thanks a lot, declaring it as an array solved mi troubles!
October 10, 2014
On Thursday, 9 October 2014 at 19:26:20 UTC, Njkp wrote:
> On Thursday, 9 October 2014 at 19:04:56 UTC, Anibal wrote:
>> Hi everyone,
>>
>> I'm trying to something like a tree structure.
>>
>> The following:
>>
>> import std.container;
>> class Tree
>> {
>>        private SList!Tree subTree;
>> }
>>
>> Produces: class Tree no size yet for forward reference.
>>
>> How i should proceed in order to keep this declaration?
>>
>> Thanks a lot!
>>
>> PD: (You guys are incredibly quick to answer, that's awesome!)
>
> make a pointer list instead, which has a fixed size:
> ---
> import std.container;
> class Tree
> {
>         private SList!(Tree*) subTree;
> }
> ---
fixed size: the item as pointer. But, BTW if you put a class as an item collection it's always a fixed size, a class is always a ptr. Better, you 'll be able to use the pointer without dereference.

But you prefear the solution of the other guy...It's ok. I just hope that your subtree will not have to be reorganized too often...because with an array, it'll be very very very slow...