working...?

iters
Сергей Маринкевич 5 months ago
parent f5f78308bd
commit 0912566c5f

@ -1,11 +1,10 @@
#pragma once #pragma once
#include "ifaces/ILinkMixin.h" #include "ifaces/ILinkMixin.h"
#include "ifaces/ILink.h"
#include <string> #include <string>
// INode является ILinkMixin, поэтому полный #include здесь оправдан class INode : public virtual ILinkMixin {
class INode : public ILinkMixin {
public: public:
~INode() override = default; ~INode() = default;
virtual const std::string& name() const = 0; virtual const std::string& name() const = 0;
virtual NodePtr getSelf() = 0;
}; };

@ -1,12 +1,13 @@
#pragma once #pragma once
#include <iostream> #include <iostream>
#include "ifaces/INode.h" #include "ifaces/INode.h"
#include "ifaces/ILinkMixin.h"
#include "links/LeafLink.h" #include "links/LeafLink.h"
#include "links/OneToManyLink.h" #include "links/OneToManyLink.h"
#include <memory> #include <memory>
template <class TLink> template <class TLink>
class LazyLinkMixin : public ILinkMixin { class LazyLinkMixin : public virtual ILinkMixin {
public: public:
void linkChild(const NodePtr& childNode) override { void linkChild(const NodePtr& childNode) override {
LinkPtr childLink = childNode->getLink(); LinkPtr childLink = childNode->getLink();

@ -7,6 +7,9 @@ class BaseNode : public INode,
public LazyLinkMixin<OneToManyLink>, public LazyLinkMixin<OneToManyLink>,
public std::enable_shared_from_this<BaseNode> { public std::enable_shared_from_this<BaseNode> {
public: public:
//using LazyLinkMixin<OneToManyLink>::linkChild;
//using LazyLinkMixin<OneToManyLink>::unlinkParent;
//using LazyLinkMixin<OneToManyLink>::getLink;
BaseNode(std::string name) : name_(std::move(name)) {} BaseNode(std::string name) : name_(std::move(name)) {}
const std::string& name() const override { return name_; } const std::string& name() const override { return name_; }
~BaseNode() { ~BaseNode() {

Loading…
Cancel
Save