Necesito insertar punteros de clases (heredados de QObject) en una QList. Sé que la siguiente sintaxis se puede utilizar:Adjuntar punteros a QList
.h
QList<MyObject*> list;
.cpp
list.append(new MyObject("first", 1));
list.append(new MyObject("second", 2));
...
y luego liberar memoria:
if(!list.isEmpty())
{
qDeleteAll(list);
list.clear();
}
Esto debería ser válido y lo hace no causa ninguna pérdida de memoria (por lo que yo sé). Sin embargo, necesito inicializar objetos antes de agregarlos a la colección. ¿Puede el siguiente fragmento de código causar algunos errores, como fugas de memoria o punteros colgantes (lo utilizaré de la misma manera para eliminar los punteros que los anteriores)?
MyObject *obj;
for(i = 0; i < 5; i++)
{
obj = new MyObject();
if(!obj.Init(i, map.values(i)))
{
// handle error
}
else
{
list.append(obj);
}
}
Gracias.
sólo una nota: si el (list.isEmpty()) cuando se utiliza qDeleteAll() es redundante, simplemente lo omitiría. –