Wie es geschrieben wurde here Qt hat bisher 8 spezielle Smart-Pointer-Klassen. Es sieht so aus als wäre es alles was du jemals brauchen wirst. Um einen dieser intelligenten Zeiger zu verwenden, muss Ihre Klasse jedoch von QObject abgeleitet werden, was nicht immer praktisch ist. Gibt es andere Implementierungen von Smartpointern in Qt, die mit beliebigen Klassen arbeiten?Smart Pointer in Qt
Antwort
Viele Qt-Klassen werden von QObject abgeleitet, und während einige der in Smart-Pointer-Klassen gebaut werden QObject bezogen (oder QSharedData), die QSharedPointer und QScopedPointer Vorlagen erscheinen Zeiger auf irgendetwas zu ermöglichen. - Einfache Alleineigentum einzelner Objekte
- scoped_ptr:
Darüber hinaus werden Sie einige smart pointer templates in Boost finden. Nicht kopierbar.
- scoped_array - Einfache alleinige Besitz von Arrays. Nicht kopierbar.
- shared_ptr - Objektbesitz unter mehreren Zeigern geteilt.
- shared_array - Array Besitz unter mehreren Zeigern geteilt.
- weak_ptr - Nichtbesitzende Beobachter eines Objekts, das shared_ptr gehört.
- intrusive_ptr - Gemeinsamer Besitz von Objekten mit einer eingebetteten Referenzzählung.
Das ist richtig. STL hat auch auto_ptr. Die Frage betrifft QT. – alexkr
Praktisch alles in Qt mit QObject als Basis, also wenn Sie etwas wollen, das außerhalb davon funktioniert, Boost ein Ort zu gehen :) –
Wow, ich benutze immer noch C++ wie "C mit Klassen" (das ist C++ um 1990). Das funktioniert, all diese hässlichen, unlesbaren, intelligenten Zeigern machen mich krank. – Lothar
- 1. C++ Smart Pointer Leistung
- 2. Ein Smart Pointer Maker
- 3. Smarter Smart Pointer
- 4. Smart Pointer und Ref Counting in Java
- 5. Smart Pointer mit "this" in C++
- 6. Wie Smart-Pointer in dieser Situation verwenden
- 7. Smart-Pointer mit Legacy-Code-Rohpointern integrieren
- 8. Wie verwende ich C++ Smart Pointer?
- 9. Smart Pointer/sichere Speicherverwaltung für C?
- 10. Klug mit Smart-Pointer: Vermeidung Shared_ptr Übernutzung
- 11. Vector of Smart Pointer Destructor Anruf
- 12. Übergabe von Smart-Pointer um C++
- 13. Smart Code Vervollständigung in Qt Creator
- 14. Wie verwende ich Smart Pointer in der Vorlage?
- 15. Gibt es eine sichere Möglichkeit, C++ 11 Smart Pointer und die Schnittstelle für Raw Pointer zusammen zu verwenden?
- 16. Verwenden von benutzerdefinierten Smart-Pointer im Boost-Python
- 17. C++ 0x Smart Pointer Vergleiche: Inkonsistent, was ist der Grund?
- 18. Smart- oder Raw-Pointer beim Implementieren von Datenstrukturen?
- 19. Verwendung von Skalar und Array im Smart Pointer
- 20. Kein Standard Weg, Smart Pointer mit regulären Zeiger zu vergleichen?
- 21. Smart-Zeiger Verwendung
- 22. Smart Zeiger Frage
- 23. Wie kann ich einen Smart Pointer erstellen, der einen Mutex sperrt und entsperrt?
- 24. Pointer, Pointer Arithmetic und Rohdaten in Swift
- 25. Smart Zeiger als Kartenschlüssel
- 26. Ist es OK, von einem Templat-Smart-Pointer-Typen vererben wollen nur Klasse
- 27. Wie entferne ich Smart Pointer aus einem Cache, wenn keine Referenzen mehr vorhanden sind?
- 28. Zurückgeben eines "Pointers", der von einem Smart Pointer gehalten werden muss
- 29. Wie kann die Klasse mit Smart Pointer auf unvollständigen Objekttyp sicher zerstört werden?
- 30. Smart Home in Emacs
Eigentlich, für die meisten dieser Zeiger müssen Sie nicht von QObject ableiten, denke ich nicht. Es gibt einige andere Dinge, die Ihre Klassen für einige von ihnen behandeln oder von einigen anderen Q-Klassen ableiten müssten. AFAIK, nur QPointer benötigt, dass Ihre Klasse von QObject abgeleitet wird. Nachdem dies gesagt wurde, erfordern sie die Fähigkeit, Qt in Ihrem Projekt zu verwenden. –