void zrealizuj_recepte(){ //Zakup lekarstwa z Apteki
string nazwa_leku, nazwa_apteki;
int numer_recepty,straznik=0;;
float koszt=0;
cout<<"\nPodaj nazwe apteki w ktorej sie znajdujesz: ";
cin>>nazwa_apteki;
fstream plik; //ZEROWANIE PARAGONU
plik.open("Paragon.txt",ios::out);
plik<<"*******Paragon*******";
plik.close();
plik.clear();
cout<<"\nPodaj numer recepty ";
cin>>numer_recepty;
Recepta rec_pom,rec_pom2;
for(list<Recepta>::iterator i=lista_recept.begin(); i!= lista_recept.end(); ++i)
{rec_pom=*i;
if(rec_pom.numer_recepty==numer_recepty)
rec_pom2=rec_pom;
}
Lek lek_pom;
straznik=0;
for(list<Lek>::iterator i=lista_lekow.begin(); i!= lista_lekow.end(); ++i)
{
lek_pom=*i;
if(lek_pom.miejsce==nazwa_apteki&& lek_pom.nazwa==rec_pom2.lek.nazwa &&lek_pom.ilosc>=rec_pom2.ilosc )
{
koszt=koszt+(rec_pom2.ilosc*lek_pom.cena);
i->ilosc=i->ilosc-rec_pom2.ilosc;
straznik=straznik+1;
fstream plik;
plik.open("Paragon.txt",ios::app);
plik<<"\n"<<rec_pom2.lek.nazwa<<" ilosc: "<<rec_pom2.ilosc<<" koszt: "<<rec_pom2.ilosc*lek_pom.cena;
plik.close();
plik.clear();
lista_recept.erase(i);
}
}
if(straznik==0)
{cout<<"\nUPS cos poszlo nie tak!";}
else
{lista_zrealizowanych_recept.push_back(rec_pom2);
//lista_recept.remove(numer);
cout<<"\nRecepta zostala zrealizowana";
};
//cout<<"\nKoszt zakupow wyniosl "<<koszt<<" zl"<<endl;
plik.open("Paragon.txt",ios::app);
plik<<"\n\nKoszt calkowity: "<<koszt<<" zl";
plik.close();
plik.clear();
}
||=== Build: Debug in Apteka (compiler: GNU GCC Compiler) ===|
C:\Users\Delfin\Desktop\Apteka\Apteka\Apteka\main.cpp||In function 'void zrealizuj_recepte()':|
C:\Users\Delfin\Desktop\Apteka\Apteka\Apteka\main.cpp|543|error: no matching function for call to 'std::__cxx11::list<Recepta>::erase(std::__cxx11::list<Lek>::iterator&)'|
C:\Programy\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\list.tcc|148|note: candidate: std::__cxx11::list<_Tp, _Alloc>::iterator std::__cxx11::list<_Tp, _Alloc>::erase(std::__cxx11::list<_Tp, _Alloc>::iterator) [with _Tp = Recepta; _Alloc = std::allocator<Recepta>; std::__cxx11::list<_Tp, _Alloc>::iterator = std::_List_iterator<Recepta>]|
C:\Programy\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\list.tcc|148|note: no known conversion for argument 1 from 'std::__cxx11::list<Lek>::iterator {aka std::_List_iterator<Lek>}' to 'std::__cxx11::list<Recepta>::iterator {aka std::_List_iterator<Recepta>}'|
C:\Programy\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\stl_list.h|1326|note: candidate: std::__cxx11::list<_Tp, _Alloc>::iterator std::__cxx11::list<_Tp, _Alloc>::erase(std::__cxx11::list<_Tp, _Alloc>::iterator, std::__cxx11::list<_Tp, _Alloc>::iterator) [with _Tp = Recepta; _Alloc = std::allocator<Recepta>; std::__cxx11::list<_Tp, _Alloc>::iterator = std::_List_iterator<Recepta>]|
C:\Programy\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\stl_list.h|1326|note: candidate expects 2 arguments, 1 provided|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Nie mam pojęcia co jest nie tak. A chodzi o głupie usunięcie elementu z listy przy pomocy gotowej funkcji.
Kompilator wskazuję tą linijkę "lista_recept.erase(i);"
Z góry dzięki za pomoc