私のクラスは複数のベースから継承していますが、そのうちの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*
)