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