fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class BaseNode {
  5. private:
  6. std::vector<BaseNode*> children;
  7. public:
  8.  
  9. BaseNode() {}
  10.  
  11. std::vector<BaseNode*> getChildren() {
  12. return children;
  13. }
  14.  
  15. void addChild(BaseNode * node) {
  16. children.push_back(node);
  17. }
  18.  
  19. virtual void print()
  20. {
  21. puts("BaseNode");
  22. }
  23.  
  24. virtual ~BaseNode() {}
  25. };
  26.  
  27. class TestNode : public BaseNode {
  28. public:
  29.  
  30. int test1 = 5;
  31. float test2 = 1.23f;
  32.  
  33. virtual void print()
  34. {
  35. printf("%i, %f\n", test1, test2);
  36. }
  37. };
  38.  
  39. BaseNode nodeTree = BaseNode();
  40. TestNode node1 = TestNode();
  41. TestNode node2 = TestNode();
  42. TestNode node3 = TestNode();
  43.  
  44. void renderNode(BaseNode * node)
  45. {
  46. node->print();
  47.  
  48. for (auto child : node->getChildren()) {
  49. renderNode(child);
  50. }
  51. }
  52.  
  53. int main() {
  54. node1.addChild(&node2);
  55. nodeTree.addChild(&node1);
  56. nodeTree.addChild(&node3);
  57. renderNode(&nodeTree);
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
BaseNode
5, 1.230000
5, 1.230000
5, 1.230000