Witam jak w tytule robię pewne zadanie z książki Szkoła programowania(nieważna w tym przypadku treść) i program wyrzuca błąd, że pole ma niekompletny typ i nie może być zdefiniowany(moje spolszczenie może być złe).
#include <iostream>
#include <cctype> // albo ctype.h
#include "stos.hpp"
int main()
{
using namespace std;
Stack st; // tworzy pusty stos
char ch;
customer po;
int money=0;
cout << "Naciœnij D, aby wprowadziæ deklaracjê, \n"
<< "P, aby przetworzyæ deklaracjê, lub K, aby zakoñczyæ.\n";
while (cin >> ch && toupper(ch) != 'K')
{
while (cin.get() != '\n')
continue;
if (!isalpha(ch))
{
cout << '\a';
continue;
}
switch(ch)
{
case 'D':
case 'd':
cout << "Podaj imie or naleznosc kolejnej osoby: ";
for(int i=0; i<2; i++)
cin>>po.fullname>>po.payment;
if (st.isfull())
cout << "Stos pelen!\n";
else
st.push(po);
break;
case 'P':
case 'p':
if (st.isempty())
cout << "Stos pusty!\n";
else
{
money+=po.payment;
cout<<"naleznosc razem:"<<po.payment<<"\n";
st.pop(po);
cout << "Osoba nr" << po << " zdjeta\n";
}
break;
}
cout << "Naciœnij D, aby wprowadzic osobe, \n"
<< "P, aby przetworzyæ osobe, lub K, aby zakonczyc.\n";
}
cout << "Fajrant!\n";
return 0;
}
#ifndef stos_hpp
#define stos_hpp
struct customer;
typedef customer Item;
class Stack
{
private:
enum { MAX = 10}; // stala zasiegu klasy
Item items[MAX]; // przechowuje elementy stosu
int top; // indeks szczytowego elementu stosu
public:
Stack();
bool isempty() const;
bool isfull() const;
// push() zwraca false, jeœli stos jest ju¿ pe³en (true w pozosta³ych przypadkach)
bool push(const Item & item); // odk³ada element na stos
// pop() zwraca false, jeœli stos jest ju¿ pusty (true w pozosta³ych przypadkach)
bool pop(Item & item); // zdejmuje element ze stosu
};
#endif
#include "stos.hpp"
struct customer
{
char fullname[35];
double payment;
};
Stack::Stack() // tworzy pusty stos
{
top = 0;
}
bool Stack::isempty() const
{
return top == 0;
}
bool Stack::isfull() const
{
return top == MAX;
}
bool Stack::push(const Item & item)
{
if (top < MAX)
{
items[top++] = item;
return true;
}
else
return false;
}
bool Stack::pop(Item & item)
{
if (top > 0)
{
item = items[--top];
return true;
}
else
return false;
}