2017-11-14 14 views
0

class Tstd::enable_shared_from_this<T>から継承するポイントは何ですか? std::shared_ptr<this>を作成しない理由がわかりません。enable_shared_from_thisから継承する目的は何ですか?

+0

まず、 'this'は型ではなく、' shared_ptr'のテンプレート引数として与えることはできません。そして目的は、オブジェクト内で 'shared_ptr'を' this'に安全に作成できるようにすることです。 – Rerito

答えて

1

Cppreference has a good example on why

あなたはstd::shared_ptrthisのを返すようにしたい場合は*thisがすでにstd::shared_ptrによって所有されていて、shared_from_this()を返す代わりに、新しいstd::shared_ptr<T>(this)を返しませんが、あなたは彼らが「知らない2つの共有ポインタになってしまいます両方とも同じオブジェクトを所有しているため、use_count()が間違っているため、未定義の動作であるdeleteという倍精度が発生します。

関連する問題