#pragma once #include "mixins/LazyLinkMixin.h" #include "ifaces/INode.h" #include class BaseNode : public INode, public LazyLinkMixin, public std::enable_shared_from_this { public: BaseNode(std::string name) : name_(std::move(name)) {} const std::string& name() const override { return name_; } ~BaseNode() { std::cout << "--- Base destructor called for: " << name_ << "\n"; } protected: NodePtr getNode() override { return shared_from_this(); } std::string name_; };