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