Comme il a été écrit here Qt jusqu'à maintenant a 8 classes pointeur intelligent specilized. On dirait que c'est tout ce dont vous aurez besoin. Toutefois, pour utiliser l'un de ces pointeurs intelligents, votre classe doit être dérivée de QObject, ce qui n'est pas toujours pratique. Existe-t-il d'autres implémentations de pointeurs intelligents dans Qt qui fonctionnent avec des classes arbitraires?Pointeurs intelligents dans Qt
Répondre
De nombreuses classes de Qt sont dérivées de QObject, et alors que certains de la construction dans les classes intelligentes pointeur sont liées à QObject (ou QSharedData), les modèles QSharedPointer et QScopedPointer semblent permettre des pointeurs sur quoi que ce soit.
Au-delà, vous trouverez quelques-uns smart pointer templates dans Boost:
- scoped_ptr - propriété unique simple d'objets simples. Non-recouvrable
- scoped_array - Simple propriété unique de tableaux. Non-recouvrable
- shared_ptr - Propriété d'objet partagée entre plusieurs pointeurs.
- shared_array - Propriété de groupe partagée entre plusieurs pointeurs.
- weak_ptr - Les observateurs non propriétaires d'un objet appartenant à shared_ptr.
- intrusive_ptr - Propriété partagée d'objets avec un nombre de références intégré.
C'est vrai. STL a aussi auto_ptr. La question concerne QT. – alexkr
Pratiquement tout en Qt utilisant QObject comme base, donc si vous voulez quelque chose qui fonctionne en dehors de cela, Boost un endroit pour aller chercher :) –
Wow, j'utilise encore C++ comme "C avec classes" (c'est C++ autour de 1990). Cela fonctionne, tous ces affreux pointeurs intelligents illisibles me rendent malade. – Lothar
En fait, pour la plupart de ces pointeurs que vous n'avez pas besoin de dériver de QObject, je ne pense pas. Il y a d'autres choses que vos classes devraient gérer, ou dériver d'autres classes Q, pour certaines d'entre elles. AFAIK, seul QPointer a besoin que votre classe soit dérivée de QObject. Cela étant dit, ils nécessitent la possibilité d'utiliser Qt dans votre projet. –