Bonjour,
J'utilise actuellement un QVector< T* > pour stocker des pointeurs, j'essaie de trouver une alternative qui prenne possession du pointeur. C'est à dire qui supprime l'objet pointé si celui-ci est supprimé ou écrasé, ou alors si le conteneur lui-même est carrément vidé ou supprimé.
En fait, l'idéal serait un équivalent de boost ptr container, mais je n'arrive pas à trouver d'équivalent dans la version actuelle, il semblerait qu'une classe QPtrList existait mais a été supprimée en version 4.
La doc recommande d'utiliser QList<T> à la place, cependant il ne semble pas que cette classe soit capable d'insérer quoi que ce soit sans faire une copie.
Et si on l'utilise sous forme de QList<T*> les inconvénients sont les mêmes que pour un QVector<T*> du côté de la destruction des objets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 QList<T>[i] = x //une copie de X dont QList est propriétaire est créée sur le tas.
Existe-t-il une solution pour ne pas se coltiner le gestion à mano, autre qu'encapsuler la classe? Comment vous feriez?
Je précise que dans ce cas ce n'est pas idéal d'utiliser des shared_ptr autour de mes objets pour des raisons d'efficacité...
Partager