首頁  >  文章  >  後端開發  >  使用「this」的 std::shared_ptr 時如何防止循環依賴?

使用「this」的 std::shared_ptr 時如何防止循環依賴?

Linda Hamilton
Linda Hamilton原創
2024-10-29 04:43:29515瀏覽

How to Prevent Circular Dependencies When Using std::shared_ptr of

「this」的std::shared_ptr:理解循環依賴

繼承std::::able_shared_from_this是解決「stdd」的關鍵shared_ptr 這個「難題。透過啟用此功能,您可以呼叫.shared_from_this() 來取得指向目前物件的共用指標。但是,這會在父物件和子物件之間引入潛在的循環依賴關係。

要解決此問題,建議使用std::weak_ptr 作為子物件對父物件的參考。 pre>

class A : public std::enable_shared_from_this

{
public:

private :
void addChild(std::shared_ptr<B> child) {
    children.push_back(child);
    child->setParent(shared_from_this());
}

};std::list> children;公用:

私有:

void setParent(std::shared_ptr<A> parent) {
    this->parent = parent;
}
};

std::shared_ptr<A> parent;
要注意的是,呼叫shared_from_this() 要求當前物件在呼叫時由std::shared_ptr 管理。

以上是使用「this」的 std::shared_ptr 時如何防止循環依賴?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn