Как я могу получить доступ к функции класса в итераторе? - PullRequest
0 голосов
/ 11 января 2012

У меня есть класс:

class Foo
{
  std::string name_;

  Foo(std::string name)
  {
    name_ = name;
  }

  std::string getName()
  {
    return name_;
  }
}

У меня есть заполненный вектор этих классов:

std::vector<Foo *> bar_;
/* ... populate bar_ ... */
std::vector<Foo *>::iterator iter = bar_.begin();

while(iter != bar_.end())
{
  std::cout << "Name: " << (*iter)->getName() << std::endl;
}

Мой (* iter) -> getName () не работает, и я получаю эту ошибку:

error: invalid cast from type ‘__gnu_cxx::__normal_iterator

1 Ответ

0 голосов
/ 11 января 2012
  1. Сделать участника публичным
  2. Далее, если th итератор является const_iterator (или контейнер является const, или оба), сделать член const

So

struct Foo
{
  std::string getName() const  { /* ... */ }
};

или

class Foo
{
 public:
  std::string getName() const { /* ... */ }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...