Gibt es einen Smartpointer, der automatisch genullt wird, wenn sein Ziel in C ++ zerstört
-
05-09-2019 - |
Frage
Ich habe festgestellt QPointer . Gibt es andere?
Lösung
Erhöhung - die weak_ptr
hat einige nette Features dass es sicher zu verwenden, wenn Sie auch shared_ptr
verwenden. Sie halten einen weak_ptr
Verweis auf eine Instanz, die von shared_ptr
Lebensdauer verwaltet wird. Wenn Sie die zugrunde liegende Instanz verwenden müssen, wandelt es in eine shared_ptr
Instanz des Konstruktor der shared_ptr
-Klasse oder die lock
Methode. Der Vorgang wird fehlschlagen, wenn die zugrunde liegende Instanz gelöscht. Die Verwendung ist die Threadsicherheit in der gleichen Art und Weise wie die shared_ptr
Klasse:
shared_ptr<int> p(new int(5));
weak_ptr<int> q(p);
// some time later
if(shared_ptr<int> r = q.lock())
{
// use *r
}
Andere Tipps
"boost :: weak_ptr" funktioniert wirklich gut mit "boost :: shared_ptr" (auch in tr1 verfügbar)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow