#pragma once #include #include "ifaces/ILink.h" /// \brief Интерфейс для классов, поддерживающих связь с дочерними элементами через ILink. /// \tparam TElem Тип дочернего элемента. template class ILinkMixin { public: using LinkPtr = std::shared_ptr>; using ElemPtr = std::shared_ptr; virtual ~ILinkMixin() = default; virtual void linkChild(const ElemPtr& child) = 0; virtual void unlinkParent() = 0; virtual const std::vector& children() = 0; virtual ElemPtr parent() = 0; virtual LinkPtr getLink() = 0; //virtual operator ElemPtr() const = 0; };