qosd: в миксины добавлен оператор конвертации в умный указатель

В отличие от метода `getNode()`, оператор конвертации будет публичным.
А ещё он позволяет преобразовывать объект неявно.
This commit is contained in:
Сергей Маринкевич
2025-08-05 19:42:36 +07:00
parent 784594faa6
commit 5b515eaf19
4 changed files with 8 additions and 4 deletions
+1
View File
@@ -11,6 +11,7 @@ public:
using ElemPtr = std::shared_ptr<TElem>;
virtual ~ILinkMixin() = default;
virtual operator std::shared_ptr<TElem>() = 0;
virtual void linkChild(const ElemPtr& child) = 0;
virtual void unlinkParent() = 0;
virtual const std::vector<ElemPtr>& children() = 0;
+4
View File
@@ -17,6 +17,10 @@ public:
Logger::get("ConDes").dbg("--- Destructor called for: BaseLinkMixin");
}
operator std::shared_ptr<INode>() override {
return this->getNode();
}
void linkChild(const ElemPtr& child) override {
getLink()->addChild(child);
+2 -2
View File
@@ -34,10 +34,10 @@ protected:
if (typeid(*child) == typeid(*this)) {
Logger::get("Mixin").dbg("--- Mutate to OneToMany");
newLink = std::make_shared<OneToManyLink<TElem>>(this->getNode());
newLink = std::make_shared<OneToManyLink<TElem>>(*this);
} else {
Logger::get("Mixin").dbg("--- Mutate to OneToOne");
newLink = std::make_shared<OneToOneLink<TElem>>(this->getNode());
newLink = std::make_shared<OneToOneLink<TElem>>(*this);
}
if (newLink && this->link_)
+1 -2
View File
@@ -31,8 +31,7 @@ public:
protected:
void lazyInit() {
if (!link_) {
link_ = std::make_shared<TLink>(
BaseLinkMixin::getNode());
link_ = std::make_shared<TLink>(*this);
}
}
LinkPtr link_;