Witam. Potrzebuję prostego sposobu na implementację drzewa węzłów w kodzie programu, aby działało tak:
Node root
|- SpatialNode object
| |- MeshNode mesh
|- SpatialNode object2
| |- MeshNode mesh
|- SpatialNode object3
| |- MeshNode mesh
Napisałem już prosty kod, ale poszukuję ładnie ułożonego sposobu, który zadziała w każdej sytuacji, a nie jestem pewien, co do moich rozwiązań.
KOD:
#include <iostream>
struct Spatial
{
float x, y, z;
};
struct Mesh : Spatial
{
float vertices[];
};
enum NODE_TYPE{NODE, SPATIAL, MESH};
union NODE_DATA{Spatial spatial; Mesh mesh;};
struct Node
{
NODE_TYPE type;
NODE_DATA data;
Node* parent;
Node(NODE_TYPE t, Node* p) : type{t}, parent{p}{}
NODE_DATA* get_parent_data(void){return &(parent->data);}
NODE_DATA* get_node_data(void){return &data;}
bool is_root(void){return parent == NULL;}
};
int main()
{
Node p(SPATIAL, NULL);
Node n(NODE, &p);
if(p.type == SPATIAL)
{
p.get_node_data()->spatial.x = 1.5;
std::cout<<n.get_parent_data()->spatial.x;
}
return 0;
}