#pragma once #include #include "mixins/BaseLinkMixin.h" #include #include "Logger.h" template class LazyLinkMixin : public BaseLinkMixin { public: void unlinkParent() override { /* No link -- no parent, who'll unlinked? */ if (!this->link_) throw std::logic_error("Link isn't inited!"); BaseLinkMixin::unlinkParent(); } LinkPtr getLink() override { lazyInit(); return this->link_; } LazyLinkMixin() {} ~LazyLinkMixin() override { Logger::get("Mixin").dbg("--- Destructor called for: LazyLinkMixin"); } protected: void lazyInit() { if (!link_) { link_ = std::make_shared( BaseLinkMixin::getNode()); } } LinkPtr link_; };