私のクラスは複数のベースから継承していますが、そのうちの1つはですstd::enable_shared_from_this。一塁でなければならないのですか?
次のコード例を考えてみます。
struct A { ~A(); };
struct B { ~B(); };
struct C : A, B, std::enable_shared_from_this<C> {};
std::make_shared<C>();
実行する~A()と~B()、C住んでいたストレージがまだ存在していることを確認できますか?
enable_shared_from_thisはアクセス可能な明確な基盤でなければならないことを知っています。私の例では、そうです。C構造体です。それは公に継承します。
classしpublicます。struct例として、入力を避けるために選びました。
~weak_ptr(); 効果:このweak_ptrオブジェクトを破棄しますが、格納されたポインタが指すオブジェクトには影響しません。」強調鉱山。
shared_ptr死んだときに終了します。たとえweak_ptr制御ブロックが割り当て解除されないようにしても、それは重要ではないと思います。
std::enable_shared_from_thisは何もしません。あなたの例では、私には[OK]を探します(あなたが巧妙な何かをしようとしていないと仮定~Aして~Bのように、ダウンキャストthisへC*)