#pragma once #include #include #include "ifaces/INode.h" using LinkPtr = std::shared_ptr; class ILink { public: virtual ~ILink() = default; virtual NodePtr getNode() const = 0; virtual NodePtr getParent() const = 0; virtual void setParent(const NodePtr& parent) = 0; virtual const std::vector& getChildren() const = 0; virtual void addChild(const NodePtr& child) = 0; virtual void removeChild(const NodePtr& child) = 0; };