#include #pragma once class Instance { public: Instance(void); Instance(const Instance&); virtual ~Instance(void); std::string name; virtual void render(RenderDevice*); std::vector children; // All children. std::string getClassName(); Instance* findFirstChild(std::string); std::vector getChildren(); std::vector getAllChildren(); void setParent(Instance*); void addChild(Instance*); void removeChild(Instance*); Instance* getParent(); Instance* clone() const { return new Instance(*this); } protected: std::string className; Instance* parent; // Another pointer. };