0
class T
がstd::enable_shared_from_this<T>
から継承するポイントは何ですか? std::shared_ptr<this>
を作成しない理由がわかりません。enable_shared_from_thisから継承する目的は何ですか?
class T
がstd::enable_shared_from_this<T>
から継承するポイントは何ですか? std::shared_ptr<this>
を作成しない理由がわかりません。enable_shared_from_thisから継承する目的は何ですか?
Cppreference has a good example on why。
あなたはstd::shared_ptr
this
のを返すようにしたい場合は*this
がすでにstd::shared_ptr
によって所有されていて、shared_from_this()
を返す代わりに、新しいstd::shared_ptr<T>(this)
を返しませんが、あなたは彼らが「知らない2つの共有ポインタになってしまいます両方とも同じオブジェクトを所有しているため、use_count()
が間違っているため、未定義の動作であるdelete
という倍精度が発生します。
まず、 'this'は型ではなく、' shared_ptr'のテンプレート引数として与えることはできません。そして目的は、オブジェクト内で 'shared_ptr'を' this'に安全に作成できるようにすることです。 – Rerito