如何在迭代器中访问类函数?

时间:2012-01-11 15:50:36

标签: c++ vector iterator

我有一个班级:

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) - &gt; getName()无法正常工作,我收到此错误:

error: invalid cast from type ‘__gnu_cxx::__normal_iterator

1 个答案:

答案 0 :(得分:0)

  1. 让会员公开
  2. 接下来,如果迭代器是const_iterator(或容器是const,或两者兼而有之),请使成员const
  3. 所以

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

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