Perchč fai in quel modo la delete della linkedList?
codice:
Node* tmp = NULL;
while ( header != NULL) {
tmp = header;
header = header->getNext();
delete tmp;
}
Gią in questo modo dopo aver superato trailer arrivo a NULL e ho cancellato la lista, perchč fai il ciclo sul trailer? Ma quindi devo fare la delete anche per i vector?
Stavo pensando...se nei cpp creo dei metodi in cui uso i puntatori devo rimuovere anche quelli? Tipo in un metodo di tipo:
codice:
Node* LinkedList::isPresent(Film* f)
{
if(getSize()>0)
{
for(Node *tmp=header->getNext(); tmp!=trailer; tmp=tmp->getNext()){
if(tmp->getElement()->getTitolo()==f->getTitolo() /*&&
tmp->getElement()->getRegista()==f->getRegista()*/)
return tmp;
}
}
return NULL;
}
E tipo se nel main ho un sacco di switch del tipo:
codice:
case 8:
{
cin.clear();
cin.ignore(2, '\n');
vector<Film*> vett=distr->ListaRemake();
vector<Film*> ::iterator it;
if(vett.size()!=0){
for(it=vett.begin(); it!=vett.end(); it++){
Film* current=*it;
cout<< current->toString();
}
}
else cout <<"Non sono presenti remake."<<endl;
break;
}
Devo fare la delete pure di tutti questi puntatori? Che confusione.....
Del resto, se volessi fare il distruttore di film, che non ha puntatori, come faccio?
codice:
#include "Film.hpp"
Film:: Film(string title, string reg)
{
titolo=title;
regista=reg;
isRemake=false;
annoUscita=-1;
}
Film::Film(string title)
{
titolo=title;
}
Film:: ~Film(){
}
void Film::setisRemake(bool value){isRemake=value;}
void Film::setTitolo(string value){titolo=value;}
void Film:: setRegista(string name){regista=name;}
void Film:: setOriginale(string film){originale=film;}
void Film:: setAttori(string actors){attori.push_back(actors);}
void Film:: setAnnoUscita(int anno){annoUscita=anno;}
void Film:: setCopieTotali(int copie){copieTotali=copie;}
void Film:: setCopiePresenti(int copie){copiePresenti=copie;}
string Film:: getTitolo(){return titolo;}
string Film:: getRegista(){return regista;}
string Film ::getOriginale(){return originale;}
vector<string> Film:: getAttori(){return attori;}
int Film:: getAnnoUscita(){return annoUscita;}
int Film:: getCopieTotali(){return copieTotali;}
int Film:: getCopiePresenti(){return copiePresenti;}
/* void Film::FissaOriginale(Film* remake, Film* original){
if(original->getAnnoUscita()<=remake->getAnnoUscita())
{
remake->setOriginale(original->getTitolo());
remake->setisRemake(true);
}
}*/
void Film::FissaOriginale(Film* remake, Film* original){
if(original->getAnnoUscita()<=remake->getAnnoUscita())
{
remake->setOriginale(original->getTitolo());
remake->setisRemake(true);
}
}
string Film::toString(){
string toReturn;
stringstream out;
Film* f=this;
out << f->getAnnoUscita();
toReturn+='('+f->getTitolo()+", "+f->getRegista()+", "+out.str()+")";
return toReturn;
}