Skip to content

Latest commit

 

History

History
66 lines (50 loc) · 1.47 KB

File metadata and controls

66 lines (50 loc) · 1.47 KB

weak_from_this

  • memory[meta header]
  • std[meta namespace]
  • enable_shared_from_this[meta class]
  • function[meta id-type]
  • cpp17[meta cpp]
weak_ptr<T> weak_from_this() noexcept;
weak_ptr<const T> weak_from_this() const noexcept;
  • weak_ptr[link /reference/memory/weak_ptr.md]

概要

thisポインタをweak_ptrに変換する。

要件

*thisのインスタンスがshared_ptrオブジェクトとして共有されていること。

戻り値

thisポインタを指すweak_ptrオブジェクトを返す。

#include <cassert>
#include <memory>

struct X : public std::enable_shared_from_this<X> {
  std::weak_ptr<X> f()
  {
    // thisを指すweak_ptrオブジェクトを作る
    return weak_from_this();
  }
};

int main()
{
  std::shared_ptr<X> p(new X());
  std::weak_ptr<X> q = p->f();

  assert(p == q.lock());
}
  • std::weak_ptr[link /reference/memory/weak_ptr.md]
  • q.lock()[link /reference/memory/weak_ptr/lock.md]

出力

バージョン

言語

  • C++17

処理系

参照