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

data pulverizer data.pulverizer at gmail.com
Mon Nov 23 01:20:04 UTC 2020


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.


More information about the Digitalmars-d-learn mailing list