有关使用矢量迭代器访问对象方法的问题
Question about accessing object method with vector iterator
我是 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)->
一点。
相关文章:
- 按基类对象访问派生类资源时出错
- 使用基类对象访问派生的仅类方法
- 从 const 对象访问非 const 方法
- 如何在C++中使用类对象访问指针数据成员
- 如何通过不同的指针使用类的对象访问结构?(链表)(C++)
- 使用二进制搜索树中的迭代器对象访问左侧节点
- 为什么引用类型在使用临时对象访问时是左值
- 从父对象 c++ 访问子方法
- 无法通过指针或对象 c++ 访问受保护的成员
- 为什么可以从类中的对象访问类的私有变量
- 对类似"struct {double, int}"对象使用reinterpret_cast进行对象访问
- 通过无符号 char 别名进行对象访问,加载和存储时会发生什么?
- 从对象访问结构枚举
- 如何全局创建对象并使用该对象访问全局范围内的公共成员函数
- 在C 中,可以从第三个共享对象访问其他两个不同共享对象
- 如何在C 中提供一个可呼叫的对象访问,例如lambda
- C 向量对象访问
- C++是否可以从同级第二个派生对象访问第一个派生对象的受保护基础数据成员?
- 如何从类内实例化的对象访问私有变量
- 多态性:通过类文本或对象访问静态成员