fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. template<class NodeObjectType, class ChildNodeObjectType, class ChildNode>
  6. class Node {
  7. public:
  8. Node(Node* parent, NodeObjectType* object);
  9. ChildNode* addAsChild(ChildNodeObjectType* object);
  10. private:
  11. NodeObjectType* nodeObject;
  12. std::vector<ChildNode*> children;
  13. };
  14.  
  15. //typedef Node<B, void, void> BNode;
  16. //typedef Node<A, B, BNode> ANode;
  17. //typedef Node<void, A, ANode> RootNode;
  18.  
  19. /* constructor */
  20.  
  21. template<class NodeObjectType, class ChildNodeObjectType, class ChildNode>
  22. ChildNode* Node<NodeObjectType, ChildNodeObjectType, ChildNode>::
  23. addAsChild(ChildNodeObjectType* object)
  24. {
  25. ChildNode* child = new ChildNode(this, object);
  26. children.push_back(child);
  27. return child;
  28. }
  29. int main() { }
Success #stdin #stdout 0s 3336KB
stdin
Standard input is empty
stdout
Standard output is empty