giulioballio
24-07-2007, 10:23
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?
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?