È necessario inserire i puntatori di classi (ereditati da QObject) in una QList. So che la seguente sintassi può essere utilizzato:Aggiunta di puntatori a QList
.h
QList<MyObject*> list;
cpp
list.append(new MyObject("first", 1));
list.append(new MyObject("second", 2));
...
e quindi liberare la memoria:
if(!list.isEmpty())
{
qDeleteAll(list);
list.clear();
}
Questo dovrebbe sii valido e lo fa non causa alcuna perdita di memoria (per quanto ne so). Tuttavia, ho bisogno di inizializzare gli oggetti prima di aggiungerli alla collezione. Può la seguente parte di codice causare alcuni errori come perdite di memoria o puntatori penzolanti (userò allo stesso modo per eliminare i puntatori come sopra)?
MyObject *obj;
for(i = 0; i < 5; i++)
{
obj = new MyObject();
if(!obj.Init(i, map.values(i)))
{
// handle error
}
else
{
list.append(obj);
}
}
Grazie.
solo una nota: il caso (list.isEmpty()) quando si utilizza qDeleteAll() è ridondante, lo ometterei. –