diff --git a/include/ifaces/INode.h b/include/ifaces/INode.h index 9ebbc70..5959b69 100644 --- a/include/ifaces/INode.h +++ b/include/ifaces/INode.h @@ -1,11 +1,10 @@ #pragma once #include "ifaces/ILinkMixin.h" +#include "ifaces/ILink.h" #include -// INode является ILinkMixin, поэтому полный #include здесь оправдан -class INode : public ILinkMixin { +class INode : public virtual ILinkMixin { public: - ~INode() override = default; + ~INode() = default; virtual const std::string& name() const = 0; - virtual NodePtr getSelf() = 0; }; diff --git a/include/mixins/LazyLinkMixin.h b/include/mixins/LazyLinkMixin.h index 9091901..1bfbfb0 100644 --- a/include/mixins/LazyLinkMixin.h +++ b/include/mixins/LazyLinkMixin.h @@ -1,12 +1,13 @@ #pragma once #include #include "ifaces/INode.h" +#include "ifaces/ILinkMixin.h" #include "links/LeafLink.h" #include "links/OneToManyLink.h" #include template -class LazyLinkMixin : public ILinkMixin { +class LazyLinkMixin : public virtual ILinkMixin { public: void linkChild(const NodePtr& childNode) override { LinkPtr childLink = childNode->getLink(); diff --git a/include/nodes/BaseNode.h b/include/nodes/BaseNode.h index c03894d..900855d 100644 --- a/include/nodes/BaseNode.h +++ b/include/nodes/BaseNode.h @@ -7,6 +7,9 @@ class BaseNode : public INode, public LazyLinkMixin, public std::enable_shared_from_this { public: + //using LazyLinkMixin::linkChild; + //using LazyLinkMixin::unlinkParent; + //using LazyLinkMixin::getLink; BaseNode(std::string name) : name_(std::move(name)) {} const std::string& name() const override { return name_; } ~BaseNode() {