Witam, poniżej mój kod. Czy podpowie mi ktoś dlaczego nie działa funkcja pokazstos()?Wyskakuje mi taki błąd: error: no matching function for call to 'std::stack<ksiazka>::top(ksiazka&)* poniżej jest zaznaczone do której linii się odnosi bład.
#include <iostream>
#include <string>
#include <stack>
#include <fstream>
using namespace std;
class ksiazka{
public:
string nazwa, autor, wydawnictwo;
int cena, rok_wyd;
};
void dodaj(ksiazka &x){
cout<<"Podaj tytuł książki:"; cin>>x.nazwa;
cout<<"Podaj autora:";cin>>x.autor;
cout<<"Podaj wydawnictwo:";cin>>x.wydawnictwo;
cout<<"Podaj rok wydania książki:";cin>>x.rok_wyd;
cout<<"Podaj cenę:";cin>>x.cena;
}
void pokaz(ksiazka x){
cout<<"\n "<<x.nazwa<<"\n "<<x.autor<<"\n "<<x.rok_wyd<<"\n "<<x.wydawnictwo<<"\n "<<x.cena;
}
stack<ksiazka>biblioteka;
void push(const ksiazka &x){};
void pop(ksiazka &x){};
void zapiszdopliku(const ksiazka& x){
ofstream plik;
plik.open("dane.txt", ios::app);
cout<<"\nzapisywanie do pliku...";
plik<<x.nazwa;
plik<<x.autor;
plik<<x.wydawnictwo;
plik<<x.cena;
plik<<x.rok_wyd;
plik.close();
}
void odczytajzpliku(ksiazka x){
fstream plik;
plik.open("dane.txt", ios::in);
plik>>x.nazwa;
plik>>x.autor;
plik>>x.wydawnictwo;
plik>>x.rok_wyd;
plik>>x.cena;
biblioteka.push(x);
}
void dodajnastos(){
ksiazka x;
dodaj(x);
biblioteka.push(x);
}
void pokazstos(){
ksiazka *x;
while(!biblioteka.empty()){
cout<<" "<<biblioteka.top(x); // <----tu wyskakuje błąd
biblioteka.pop();
}cout<<"\n";
}
int main()
{
ofstream plik;
ksiazka x;
//push(x);
odczytajzpliku(x);
dodajnastos();
zapiszdopliku(x);
//pokaz(x);
pokazstos();
return 0;
}