Skip to content
Snippets Groups Projects
Commit 0dfdd9da authored by Frederik Simonsen's avatar Frederik Simonsen
Browse files

destructorer

parent fca1c234
Branches
No related tags found
1 merge request!6Frederik
......@@ -89,6 +89,15 @@ Rute::Rute(ifstream & inn) {
}
}
/**
* Sletter alt minne allokert ifm. Rute-listen
*/
Rute::~Rute() {
for (auto it = stoppene.begin(); it != stoppene.end(); it++)
delete (*it); // Sletter det tilpekte
stoppene.clear(); // Tømmer listen for pekere
}
/**
* Sjekker om et sluttsted ifm. smetting av stopper er før på ruten
* enn startstedet i intervallet for hvor stopper skal smettes
......@@ -974,6 +983,15 @@ void Rute::smettStopp() {
cout << '\n';
skrivRute(Fram); // skriver oppdatert rute forlengs
}
} else { // Ikke lagt til stopp på ruten pga sent uthopp:
delete fStopp; // Sletter evt. allokert minne:
delete aStopp;
delete nStopp;
delete tempStopp;
delete fStoppested;
delete aStoppested;
delete nStoppested;
delete tempStoppested;
}
}
......
......@@ -35,6 +35,7 @@ class Rute {
public:
Rute();
Rute(std::ifstream & inn);
~Rute();
bool erForst(Stopp* s1, Stopp* s2);
bool erListeGyldig();
bool erNabo(Stopp* s1, Stopp* s2);
......
......@@ -18,6 +18,14 @@ using namespace std;
extern Stoppesteder gStoppestederBase; // Henter inn globalt objekt
/**
* Sletter allokert minne i Ruter-mappet
*/
Ruter::~Ruter() {
for (auto it = rutene.begin(); it != rutene.end(); it++)
delete it->second; // Sletter det tilpekte
rutene.clear(); // Tømmer mappet for pekere
}
/**
* Sjekker om et gitt ruteNr finnes i datastrukturen
......@@ -156,8 +164,10 @@ void Ruter::nyRute() {
rutene[ruteNr] = nyRute; // Lagrer ruten
cout << "\nNy rute er lagt til:\n";
ruteBeskrivelse(ruteNr); // Skriver ut ruten
} else
} else {
nyRute->slettData(); // <1 stopp, sletter ruten
delete nyRute; // Sletter peker, ved ugyldig rute
}
} else // Rutenummer er duplikat:
cout << "\nRutenummeret finnes fra før. Kan ikke legge til rute.\n\n";
......
......@@ -17,6 +17,7 @@ class Ruter {
private:
std::map <int, Rute*> rutene;
public:
~Ruter();
bool ruteNrFinnes(const int ruteNr);
void endreRute();
void handling();
......
......@@ -52,6 +52,14 @@ Stoppested::Stoppested(const std::string nvn, ifstream & inn) {
inn.ignore(); // Forkaster enter hvis det finnes naboer
}
/**
* Tømmer et stoppesteds vektorer for innhold
*/
Stoppested::~Stoppested() {
nabostopper.clear(); // Tømmer vektor med nabostopp nummere
tidtilnabo.clear(); // Tømmer vektor med tid til de ulike naboene
}
/**
* Sjekker om et Stoppested har en gitt nabo
*
......
......@@ -24,6 +24,7 @@ class Stoppested {
public:
Stoppested(const std::string nvn);
Stoppested(const std::string nvn, std::ifstream & inn);
~Stoppested();
bool finnesNabo(const int nr);
int hentNaboIndeks(const int nr);
int hentNaboTid(const int nr);
......
......@@ -15,6 +15,15 @@
#include "stoppesteder.h"
using namespace std;
/**
* Sletter minne allokert med Stoppesteder
*/
Stoppesteder::~Stoppesteder() {
for (int i = 0; i < stopper.size(); i++)
delete stopper[i]; // Sletter det tilpekte
stopper.clear(); // Tømmer vektor for pekere
}
/**
* Sjekker om en stoppesteds indeks finnes i vektoren
*
......
......@@ -19,6 +19,7 @@ class Stoppesteder {
private:
std::vector <Stoppested*> stopper;
public:
~Stoppesteder();
bool finnesIndeks(const int nr);
bool ikkeHarTall(const std::string nvn);
bool tom();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment