Ich habe QPointer gefunden. Gibt es noch andere?Gibt es einen intelligenten Zeiger, der automatisch gelöscht wird, wenn sein Ziel in C++ zerstört wird
4
A
Antwort
8
Boost - die weak_ptr
hat einige nette Features, die es sicher zu bedienen, wenn Sie auch verwenden shared_ptr
. Sie behalten einen weak_ptr
Verweis auf eine Instanz, die von shared_ptr
Lebensdauer verwaltet wird. Wenn Sie die zugrunde liegende Instanz verwenden müssen, konvertieren Sie sie unter Verwendung des Konstruktors der Klasse shared_ptr
oder lock
in eine shared_ptr
-Instanz. Die Operation schlägt fehl, wenn die zugrunde liegende Instanz gelöscht wurde. Die Verwendung ist fadensicher in der gleichen 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
}
6
"boost :: weak_ptr" funktioniert wirklich gut mit "boost :: shared_ptr" (auch in tr1 verfügbar)
Verwandte Themen
- 1. Wie man einen intelligenten Zeiger vorzeitig zerstört
- 2. Androiden gibt es eine Ansicht Rückruf, wenn es zerstört wird?
- 3. Gibt es einen allgemeinen intelligenten Zeiger wie auto_ptr und shared_ptr, der C++ 0x nicht benötigt?
- 4. QGestureRecognizer wird automatisch von QGestureManager zerstört?
- 5. PHP-Datei wird automatisch gelöscht
- 6. Wie wird der Volley-Cache automatisch gelöscht?
- 7. Der zweite Dialog wird automatisch gelöscht, wenn er im OnClickListener des ersten Dialogs erstellt wird.
- 8. Was passiert mit einem weak_ptr, wenn sein shared_ptr zerstört wird?
- 9. Gibt es einen Funktor, der einen (intelligenten) Zeiger ignoriert, ihn hochlädt und dann eine Methode aufruft?
- 10. Ist es eine schlechte Übung, einen intelligenten Zeiger einzugeben?
- 11. C++: Dynamischen Speicher freigeben, wenn das abgeleitete Klassenobjekt zerstört wird
- 12. Kann Qt veranlassen, dass QObject * auf nullptr gesetzt wird, wenn QObject zerstört wird?
- 13. Wie überprüft man, wenn ein Zeiger gelöscht wird?
- 14. Werden Signale in Qt automatisch getrennt, wenn eine der Klassen gelöscht wird?
- 15. Wie wird automatisch alle x Minuten gelöscht?
- 16. Gibt es C++ faulen Zeiger?
- 17. Lang andauernde Aufgabe, wenn Aktivität zerstört wird
- 18. Alarm einstellen, wenn Aktivität zerstört wird
- 19. Wie erfasse ich einen intelligenten Zeiger in einem Lambda?
- 20. Gibt es eine Möglichkeit, einen Beitrag automatisch zu aktualisieren, wenn ein Beitrag in Wordpress veröffentlicht wird?
- 21. Trigger in Subskribenten wird gelöscht, wenn Replikation erstellt wird
- 22. Gibt es einen idiomatischen Weg, einen Zeiger zu ersetzen?
- 23. Adressierung und Zeiger in Ziel C
- 24. AsyncTask wird immer ausgeführt, selbst wenn App zerstört wird?
- 25. Gibt es eine Leistungssteigerung, wenn der char-Zeiger beim Zugriff auf Elemente nach Index erhöht wird?
- 26. Muss ich Scope-Variablen "unwatch", wenn der Bereich zerstört wird?
- 27. Spiele löschen, wenn Benutzer gelöscht wird
- 28. Warum wird meine SQLite-Datenbank gelöscht, wenn sie geändert wird?
- 29. Gibt es einen einfacheren Weg, um zu einem Mitglied einer Klasse zu kommen, die in einen intelligenten Zeiger eingewickelt ist?
- 30. Erste Schritte mit intelligenten Zeigern in C++
Danke. Ich war mir nicht bewusst, dass weak_ptr dieses Verhalten hatte. Ich frage mich jedoch, wie viel ich für das unnötige Referenzzählverhalten bezahle. Wie auch immer, Ihre Antwort war zuerst, denke ich. Als am besten markieren. –