Zwróć uwagę, że...
class Stack
{
private:
customer person; // Twoja zawartość stosu!!!
int top;
public:
Stack();
bool isempty() const;
bool isfull() const;
bool push(const double & item);
bool pop(double & element);
};
...tak zbudowany stos będzie przechowywał tylko jeden element.
Napisałeś, że chcesz przechowywać elementy na stosie z wykorzystaniem tablicy, zakładasz również maksymalny rozmiar stosu na 35 elementów, stąd spróbuj może w ten sposób:
private:
customer people[35]; // Twoja struktura imitująca stos
Masz teraz stos o rozmiarze 35. Jeżeli chodzi o "wrzucenie" na stos całej struktury to w tym przypadku stos jest już pełen takich struktur, tylko nie zainicjalizowanych, czyli bez wartości. Żeby nadać wartości "całej strukturze" czyli fullname i payment, musisz przy pomocy funkcji push nadawać wartości obu tym polom struktury. Tymczasem...
bool Stack::push(const double & element)
{
if (top < 35) //trzeba wprowadzic całą strukturę na stos!
{ person.fullname[top++] = element;
return true;
}
else
return false;
}
... w pole typu char* wpisujesz double, czy takie było zamierzenie, czy raczej przekazywany argument tyczył się pola payment??
Czy nie było Twoją intencją coś w stylu:
bool Stack::push( customer person)
{
if (top < 35) //trzeba wprowadzic całą strukturę na stos!
{
strcpy(people[top].fullname, person.fullname); //dlaczego tak??:)
people[top].payment = person.payment;
top++;
return true;
}
else
return false;
}
Oczywiście trzeba zmienić też metodę pop.
Zwróć uwagę również na sposób wprowadzanie i przekazywania zmiennej do funkcji.
std::cout << "Podaj nr deklaracji: ";
std::cin >> myperson.payment;
if(mystack.isfull())
std::cout << "Stos pełen!\n";
else
mystack.push(myperson.payment);
Przekazując zmienną przez referencje powodujesz, że zmiana tej zmiennej na zewnątrz funkcji spowoduje zmianę na Twoim stosie - prawdopodobnie niepożądaną.
Proponuję również spróbować dynamicznej alokacji pamięci i stos zorganizować np w postaci tablicy wskaźników na struktury typu customer.