有关使用矢量迭代器访问对象方法的问题

Question about accessing object method with vector iterator

本文关键字:对象 访问 方法 问题 迭代器      更新时间:2023-10-16

我是 c++ 的新手,我有一个关于向量/迭代器的任务。我遇到了一个问题,我可以通过在互联网上搜索来解决,但不幸的是,我访问的论坛只提供了解决方案,并没有解释为什么它有效。这是我遇到的问题:

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

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

(*iter)->doStuff;

将 * 放在迭代器前面并在其周围放置 () 似乎可以解决问题,但我想了解为什么。谢谢!

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

当您迭代向量时,您"手头"的对象是一个迭代器。要从该迭代器转到向量中的对象,您必须取消引用它((*iter)位)。现在你有一个指针。要从该对象转到实际对象,您还需要取消引用指针。这是最后(*iter)->一点。