Je viens de découvrir le concept d'auto_ptr et je l'aime! Comme Qt nécessite souvent un QList ou un QVector < (certains QObject ou QWidget) *>, y a-t-il une raison concrète pour laquelle auto_ptr devrait être évité? Si je ne me trompe pas, il vous permet de remplacer ceci:Qt et auto_ptr
std::vector<MyClass*> vec;
/* add several elements to the vector and do stuff with them */
for(size_t i=0; i<vec.length(); ++i)
{
delete vec[i];
}
vec.clear();
avec somthing beaucoup plus court (pas de nettoyage)
std::vector<auto_ptr<MyClass>> vec;
/* add several elements to the vector and do stuff with them */
// no need for the delete loop
... peut-Qt travailler encore sa magie de mémoire partagée avec celle de auto_ptr? La gestion de la mémoire automagique parent-enfant fonctionne-t-elle toujours de manière transparente? Merci
[Vous ne voulez pas utiliser un conteneur de 'auto_ptr' objets] (http://stackoverflow.com/ questions/111478/pourquoi-est-ce-faux-utiliser-stdauto-ptr-avec-stl-conteneurs). Vous pouvez utiliser 'shared_ptr' à la place, bien que je n'ai jamais utilisé Qt et je ne peux pas dire à quel point il joue avec les différentes formes de pointeurs intelligents. –
Ou vous pouvez utiliser un conteneur conçu pour contenir des pointeurs. boost: ptr_vector –
@Martin, ou mieux, vous pouvez utiliser QVector, qui est également conçu comme un vecteur de pointeurs, en tenant par valeur pour les types plus petits qu'un pointeur et fournit également tous les goodies des conteneurs Qt. – CMircea