//A basic node class
class BasicNode
{
public:
BasicNode* parent;
std::vector<BasicNode*> children;
BasicNode();
~BasicNode();
};
//A node template class where nodes can have content
template <typename T>
class ContainerNode
{
public:
ContainerNode<T>* parent;
std::vector<ContainerNode<T>*> children;
T content;
ContainerNode(void) { };
~ContainerNode(void) { };
};