How to construct a tree data structure with differently static nodes types

data pulverizer data.pulverizer at gmail.com
Mon Nov 23 01:33:19 UTC 2020


On Monday, 23 November 2020 at 01:20:04 UTC, data pulverizer 
wrote:
> Hi all,
>
> I am trying to construct a tree data structure composed of 
> differently (statically) typed nodes. The basic case is a 
> binary tree. So you have a node like:
>
> ```
> struct Node(T)
> {
>   T value;
>   Node* next;
>   Node* prev;
> }
>
> void main()
> {
>   auto x = Node!(int)(2);
>   auto y = Node!(double)(3.2);
>   x.next = &y; //gives error
> }
> ```
> Error: cannot implicitly convert expression & y of type 
> Node!double* to Node!int*
>
> So implicity Node!(T) will produce an object with prev, and 
> next type Node!(T)*. But once I give them different types:
>
> ```
> struct Node(T, P, N)
> {
>   T value;
>   Node!(P...)* prev;
>   Node!(N...)* next;
> }
> ```
>
> I can no longer specify the types at all, they become 
> circularly referenced. Would appreciate the solution to this.
>
> Many thanks.

p.s. Something equivalent can be built using tuples but it's less 
convenient to write code for.


More information about the Digitalmars-d-learn mailing list