|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2004
Città: goettingen
Messaggi: 275
|
[C++] problema distruttori
sto usando i vettori std di C++, tuttavia voglio evitare che sia chiamato un costruttore di copia quando inserisco un elemento nel vettore tramite push_back(), pertanto ho costruito dei vettori di puntatori come:
std::vector<Type1*> v1; std::vector<Type2*> v2; std::vector<Type3*> v3; for( int i = 0; i < v1.size(); i++ ) { Type1 *v1_obj = new Type1(args); v1.push_back( v1_obj ); Type2 *v2_obj = new Type2(args); v2.push_back( v2_obj ); Type3 *v3_obj = new Type3(args); v3.push_back( v3_obj ); } tuttavia quando i distruttori vengono chiamati o tento di costruire un distruttore come: for( int i = 0; i < v1.size(); i++ ) { delete [] v1[i]; delete [] v2[i]; delete [] v3[i]; } ottengo tanti bei Segmentation Fault.. sto facendo qualcosa di non molto ortodosso?
__________________
La prima necessità dell'uomo è il superfluo. Albert Einstein |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
I puntatori sono puntatori ad array o ad oggetti?
Se crei un oggetto con operatore new[] devi cancellarlo con delete[] altrimenti devi usare delete senza []. Edit: Ho riguardato la cosa in pausa pranzo, devi usare delete e non delete[]... Ultima modifica di Ufo13 : 24-07-2007 alle 14:08. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2004
Città: goettingen
Messaggi: 275
|
grazie mille funziona!
__________________
La prima necessità dell'uomo è il superfluo. Albert Einstein |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:00.




















