Wyświetlanie listy obiektów

0

Witam,
Składnikami listy są obiekty zawierające w sobie zmienną string i zmienną int. Chcę wyświetlić listę za pomocą takiego kodu:

list<Klasa*>::iterator it;
	for (it=lista.begin(); it!=lista.end(); ++it)
    cout << " " << *it;
  	cout << endl;

Deklaracja listy wygląda tak:

list<Para*> lista;

Wyświetlają mi się tylko jakieś adresy. W jaki sposób wyświetlić wszystkie pola każdego elementu listy?

0

oczywiście że wyświetlają się adresy, bo elementami listy są Klasa*, czyli wskaźniki.

W jaki sposób wyświetlić wszystkie pola każdego elementu listy?
Nie ma ogólnego sposobu, musisz wyświetlać te pola samemu.
Poczytaj też jak zdefiniować własny operator dla cout, ale to w drugiej kolejności.

0

W takim razie po dodaniu operatora dereferencji powinniśmy uzyskać wartość przechowywaną pod danym adresem? Tak powinno być w przypadku normalnej zmiennej (int, char, itp.). A jak jest z klasami? Jeśli klasa ma pole string napis to jak wyświetlić po kolei te pola z całej listy?

Po dodaniu gwiazdki:

list<Para*>::iterator it;
	for (it=lista.begin(); it!=lista.end(); ++it)
    cout << " " << **it;
  	cout << endl; 

wykrzacza konsolę.

0

Zamiast *it wstawiłem (*it)->wyraz. Teraz chyba działa, tylko że nie ma dostępu do pola, bo jest ono prywatne. W jaki sposób można się do niego dostać?

0

Do prywatnego pola się nijak nie dostaniesz, bo jest prywatne. (Tzn. spoza metod klasy się nie dostaniesz) O to w tym chodzi. Napisz metodę dostępową, która zwróci wartość tego pola.

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