Использование функции класса для объектов, хранящихся в List, доступ к которым осуществляется через итератор - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь напечатать имена некоторых экземпляров Player, которые хранятся в List<Player> проигрывателях. Что я должен заменить "Plop!" чтобы заставить это работать?

   list<Player>::iterator it;
   for(it=players.begin(); it != players.end(); ++it) cout << "Plop!" << " ";
   cout << endl;

Я пытался

*it.getName();
*it->getName();

У меня такое ощущение, что итератор должен обрабатываться иначе, чем если бы он был обычным указателем. Или, может быть, итератор *it вообще не содержит объект Player?

Ответы [ 3 ]

1 голос
/ 13 января 2012

должно быть;

(*it).getName()

.оператор связывает сильнее, чем *, что в противном случае приводит к сбою компиляции.

1 голос
/ 13 января 2012
it->getName();

, пока Player имеет этот метод ...

0 голосов
/ 13 января 2012

вам нужно разыменовать итератор, как вы делаете

*it

, но разыменование падает влево, если вы понимаете, что я имею в виду :), поэтому вам нужно сохранить его на месте с некоторымискобки:

(*it).getName();

и не забывайте о фигурных скобках в цикле for!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...