ho una classe A
che ha un campo di tipo std::unique_ptr
:Spostare proprietà da std :: shared_ptr a std :: unique_ptr
class A
{
public:
std::unique_ptr pointer;
// class body
};
E da qualche parte nel codice, sto usando pochi std::shared_ptr
s che puntano a lo stesso oggetto. Ora quello che mi piacerebbe ottenere è spostare la proprietà su questo std::unique_ptr
nella mia classe, in modo che se tutti gli shared_ptr
s verranno distrutti, il mio oggetto rimarrà attivo finché questo unique_ptr
rimarrà attivo.
La mia domanda è - è possibile spostare la proprietà da std::shared_ptr
a std::unique_ptr
e se sì, come posso fare questo?
Logicamente, uno scenario del genere non ha senso per me. Supponiamo per un po 'che sia possibile trasferire l'onwership, ma puoi farlo * solo quando * sei sicuro che ci sono solo ** uno ** alvati 'shared_ptr'; se questo è il caso, allora puoi ancora usare 'shared_ptr' come membro di' A' e ** fingere ** che sia 'unique_ptr'. – Nawaz
"sposta la proprietà a questo std :: unique_ptr nella mia classe, in modo che se tutti gli shared_ptrs saranno distrutti, il mio oggetto rimarrà attivo fintanto che questo unique_ptr rimarrà in vita ..." Perché non fare solo un altro condiviso in A? – qPCR4vir
e se ci fossero altri ptr condivisi con lo stesso oggetto? Come potresti gestirlo? 'shared_ptr' non fornisce il metodo' release' per un motivo. –