kolejka priorytetowa i metody

0

mam takie o to pytanie
napisalem program ktory korzysta z kolejki priorytetowej dodawane sa tam obiekty pewnej klasy i tutaj zaczyna sie problem
w klasie istnieje metoda wypisZ() ktora wypisuje wszystkie elementy tej klasy metoda zwraca typ void
i w momencie gdy chce zrobic tak

while(!kolejka.empty())
		{
			cout << kolejka.top().wypisz() <<endl;
			kolejka.pop();
			}
 

kompilatora zwraca mi blad ze nie istnieje przeciazony operator << ktory pozwalalby na wypisanie typu void
dopiero zmiana metody wypisz zeby zwracala int i dodanie linijki return 0; pomaga jednak wtedy po kazdym wypisanym obiekcie widnieje nieeleganckie 0 ktos ma pomysl jak zrobic tak zeby tego 0 nie bylo ? albo zeby typ zwracany przez metode moglby byc void?

0

Niech metoda zwraca cały string do wypisania albo zwyczajnie usuń to cout.

0

A nie lepiej gdybyś do funkcji wypisz() przekazywał element kolejki i zwracał jego wartość?? Masz tu prosty kod programu co to robi:

#include<iostream>
#include<stack>
using namespace std;

class klasa
{
      public:
int wartosc;  

int wypisz(klasa element)
{
 return element.wartosc;   
}    
};


int main()
{
    klasa a;
    cout<<"Podaj element kolejki"<<endl;
    stack<klasa> kol;
    
 for(int i=0; i<10; i++)   
 {
         cin>>a.wartosc;
         kol.push(a);
    
}

cout<<"Wypisywanie elementow:"<<endl;
while(!kol.empty())
{
                   cout<<a.wypisz(kol.top())<<endl;
                   kol.pop();
}


system("PAUSE");
return 0;
}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1