#pragma once #include #include "mixins/BaseLinkMixin.h" #include 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 { std::cout << "--- Destructor called for: " << "LazyLinkMixin" << "\n"; } protected: void lazyInit() { if (!link_) { link_ = std::make_shared( BaseLinkMixin::getNode()); } } LinkPtr link_; };