c++ problem av typen vector.erase()
Hej forumet!
Har ännu ett litet problem med ett program jag håller på att jobba med.
Det är ett skolarbete där man gör en varuautomat (säkert fler som har samma program) med valfritt antal produkter mm.
Man ska kunna köpa, byta ut, lägga till och ta bort produkter.
Nu är jag nästan färdig med allting MEN har stött på problem när man ska ta bort enskilda produkter.
En liten sammanfattning av hur programmet ser ut:
Jag har gjort en klass som heter Automat. Den består av flera funktioner och variabler men huvudfunktionen
är en container av typen list som lägger in nya produkter. Så här ser den ut: list<Automat*> varor;
När man startar programmet så anropas automatiskt den här funktionen:
void Automat::basutbud()
{
// för att det från början skall finnas varor i automaten
// så börjar programmet med ett anrop av denna funktion som ger automaten 6 varor från start.
ant = 0;
varor.push_back(new Automat(++ant, "Kexchocklad", 25)); // listans varor allokerar dynamiskt en ny vara med nr, namn och pris på varorna
varor.push_back(new Automat(++ant, "Brännvin", 15));
varor.push_back(new Automat(++ant, "Fetaost", 27));
varor.push_back(new Automat(++ant, "Gödsel" , 10));
varor.push_back(new Automat(++ant, "Torkarblad", 15));
varor.push_back(new Automat(++ant, "Trisslott", 30));
}
listan varor lägger från start in 6 produkter av typerna int, string och int. alltså nr, namn och pris. so far so good men nu kommer problemet.
När man vill ta bort enskilda varor så går det bara att ta bort string-variabeln från listan.
Så här ser funktionen ut (lite förenklatt):
cout << "Ange numret på varan du vill ta bort....Inväntar val: "; cin >> adminval; // adminval har typen int
for(auto it = varor.begin(); it != varor.end(); it++)
{
if(adminval == (*it)->nr)
{
(*it)->nr.erase(); // funkar inte...nr har typen int
(*it)->namn.erase(); // funkar...namn har typen string
(*it)->pris.erase(); // funkar inte...pris har typen int
}
}
när jag försöker köra programmet får jag felmeddelandet: error C2228: left of '.erase' must have class/struct/union för "nr" resp. "pris".
en annan funktion jag har som tar bort alla varor funkar felfritt. Den ser ut så här:
for(auto it = varor.begin(); it != varor.end(); it++) // loopar igenom varorna
delete *it; // tar bort allt allokerat minnesutrymme
varor.clear(); // listan består nu av pekare med skräpvärden och även dessa skall tas bort.
ant = 0; // nollställ räknaren för antal varor
så här är mitt problem helt enkelt. ledsen för att det blev så mycket text men programmet har hunnit bli lite stort nu
hade vart evigt tacksam för hjälp!!!
en trevlig valborg till alla!!
mvh - johan