Reflex86
15-07-2008, 16:50
Ciao ragazzi ho questo problema:
Object::~Object()
{
if(!vector.empty())
{
for(int i=0; i<vector.size(); i++)
delete vector[i];
vector.clear();
}
}
Object &Object::operator=(const Object &b)
{
if (this!=&b)
{
if(!vector.empty())
{
for(int i=0; i<vector.size(); i++)
delete vector[i];
vector.clear();
}
vector = b.vector;
}
return *this;
}
Specifico che si tratta di un vector<type*>, quindi devo deallocarlo a mano.
quando eseguo il programma inserendo una assegnazione nel main, il programma si esegue ma poi lancia una eccezione, come se andasse a togliere due volte lo stesso oggetto credo. Se invece provo a mettere i<vector.size() - 1 nel ciclo del distruttore, il problema non c'è. Idem se elimino il codice che dealloca i puntatori dalla funzione operator=
Ora mi chiedo: è giusta l'implementazione? cosa sbaglio?
grazie
Object::~Object()
{
if(!vector.empty())
{
for(int i=0; i<vector.size(); i++)
delete vector[i];
vector.clear();
}
}
Object &Object::operator=(const Object &b)
{
if (this!=&b)
{
if(!vector.empty())
{
for(int i=0; i<vector.size(); i++)
delete vector[i];
vector.clear();
}
vector = b.vector;
}
return *this;
}
Specifico che si tratta di un vector<type*>, quindi devo deallocarlo a mano.
quando eseguo il programma inserendo una assegnazione nel main, il programma si esegue ma poi lancia una eccezione, come se andasse a togliere due volte lo stesso oggetto credo. Se invece provo a mettere i<vector.size() - 1 nel ciclo del distruttore, il problema non c'è. Idem se elimino il codice che dealloca i puntatori dalla funzione operator=
Ora mi chiedo: è giusta l'implementazione? cosa sbaglio?
grazie