#pragma once #include "mixins/LazyLinkMixin.h" #include class SimpleNode : public LazyLinkMixin, public std::enable_shared_from_this { public: static NodePtr create(std::string name) { struct EnableMakeShared : public SimpleNode { EnableMakeShared(std::string n) : SimpleNode(std::move(n)) {} }; return std::make_shared(std::move(name)); } const std::string& name() const override { return name_; } ~SimpleNode() { std::cout << "--- Destructor called for: " << name_ << "\n"; } protected: std::shared_ptr getShared() override { return shared_from_this(); } private: friend class LazyLinkMixin; explicit SimpleNode(std::string name) : name_(std::move(name)) {} std::string name_; };