PDA

View Full Version : [C++] Distruttore su vector


Michael Jennings
04-03-2009, 08:56
Salve a tutti,
nel mio programa in C++ ho utilizzato un vettore dinamico il cui tipo non è uno di quelli elementari (int, float, ecc.) ma è di una classe da me definita. Al termine volevo invocare il distruttore su di esso ma non so come fare. Con gli array statici basta utilizzare l'istruzione "delete[] array"...come posso fare con un array dinamico??
La dichiarazione del vettore è la seguente:
vector<nomeClasse> identificatore;
:help:

Don[ITA]
04-03-2009, 10:06
Se non erro il distruttore di vector (o di map, list, ecc) viene chiamato automaticamente a fine scope.

vizzz
04-03-2009, 10:16
Salve a tutti,
nel mio programa in C++ ho utilizzato un vettore dinamico il cui tipo non è uno di quelli elementari (int, float, ecc.) ma è di una classe da me definita. Al termine volevo invocare il distruttore su di esso ma non so come fare. Con gli array statici basta utilizzare l'istruzione "delete[] array"...come posso fare con un array dinamico??
La dichiarazione del vettore è la seguente:
vector<nomeClasse> identificatore;
:help:

scorri il vettore e dai una delete per ogni oggetto che contiene, poi svuoti il vettore.

tomminno
04-03-2009, 11:50
scorri il vettore e dai una delete per ogni oggetto che contiene, poi svuoti il vettore.

O usi un vector di shared_ptr :D

cionci
04-03-2009, 18:29
In ogni caso se hai dichiarato:

vector<nomeClasse> identificatore;

dovrebbe usare il costruttore di copia di nomeClasse per creare gli elementi del vettore, quindi non devi fare alcuna delete. I dati smetteranno di esistere quando il vector verrà distrutto.

Se usavi i puntatori il discorso era molto diverso ;)