关于使用向量迭代器访问对象方法的问题

时间:2019-04-22 16:05:20

标签: c++ vector iterator

我是c ++的新手,我对vector / iterators有分配。我遇到了一个问题,可以通过在Internet上搜索来解决,但不幸的是,我所访问的论坛仅提供了该解决方案,而没有解释它为什么有效。这是我遇到的问题:

std::vector::<Student*>::iterator iter;
for (iter = v_students.begin(); iter != v_students.end(); iter++)
{
     iter*->doStuff(); // Gave me a compile error
}

我花了很长时间来解决该错误,但没有成功,直到我在论坛上发现有人建议这样做:

(*iter)->doStuff;

将*放在迭代器的前面,并在其周围加上()似乎可以解决问题,但我想了解原因。谢谢!

1 个答案:

答案 0 :(得分:0)

您有一个指向对象的指针向量。

迭代向量时,您拥有的对象是迭代器。要从该迭代器转到向量中的对象,必须取消引用((*iter)位)。现在您有了一个指针。要从该对象变为实际对象,还需要取消引用指针。那是最后的(*iter)->位。

相关问题