ich eine Klasse A
haben, die ein Feld vom Typ hat std::unique_ptr
:verschieben Besitz von std :: shared_ptr std :: unique_ptr
class A
{
public:
std::unique_ptr pointer;
// class body
};
Und irgendwo im Code, ich verwende einige std::shared_ptr
s, die auf das gleiche Objekt. Nun, was ich erreichen möchte, ist, das Eigentum auf diese std::unique_ptr
in meiner Klasse zu verschieben, so dass, wenn alle shared_ptr
s zerstört werden, mein Objekt am Leben bleibt, solange diese unique_ptr
am Leben bleiben wird.
Meine Frage ist - ist es möglich, den Besitz von std::shared_ptr
zu std::unique_ptr
zu verschieben und wenn ja, wie kann ich das tun?
Logischerweise macht ein solches Szenario keinen Sinn für mich. Nehmen wir einmal an, dass es möglich ist, das Onwership zu übertragen, aber Sie könnten das * nur tun, wenn Sie sicher sind, dass es nur ein einziges gibt: 'shared_ptr' alives; Wenn das der Fall ist, können Sie 'shared_ptr' noch als Mitglied von' A' verwenden und ** so tun, als wäre es 'unique_ptr'. – Nawaz
"verschiebe den Besitz auf diesen std :: unique_ptr in meiner Klasse, so dass, wenn alle shared_ptrs zerstört werden, mein Objekt solange am Leben bleibt, wie dieser unique_ptr am Leben bleibt ..." Warum nicht einfach einen weiteren in A teilen? – qPCR4vir
Was ist, wenn N andere geteilte Zeiger auf dasselbe Objekt zeigen? Wie konntest du das vielleicht handhaben? 'shared_ptr' bietet aus irgendeinem Grund keine' release' Methode. –