【问题标题】:Accessing element from reference to vector of pointers [closed]从指针向量的引用访问元素[关闭]
【发布时间】:2021-01-03 19:25:37
【问题描述】:

我有一个指针向量的引用,如下:

std::vector<Object*>& objects;

如何从这个向量访问对象?

【问题讨论】:

  • *(objects[index_you_want]).doObjectFunc(); 是一种方式。
  • objects 作为参考是无关紧要的,您可以像访问非参考向量一样访问它。
  • @πάνταῥεῖ 恐怕这会给我一个“表达式必须具有类类型”的错误(我使用的是 Visual Studio '19)
  • @para 明白了????
  • @πάνταῥεῖ 不应该是(*objects[index_you_want]).doObjectFunc();吗?

标签: c++ pointers vector dereference


【解决方案1】:

objects 是一个引用与问题没有直接关系——您使用引用的方式与对同一对象使用简单标识符的方式完全相同。

因此,您可以通过任何常规方式选择向量的单个元素,例如通过索引、迭代器或其他方式。结果是向量的元素类型,即Object *

Object *o = objects[42];

您可以通过解引用运算符(一元*)访问o 指向的对象。或者,您可以使用间接访问运算符 (-&gt;) 来访问其方法和字段:

(*o).do_something();
int i = o->an_int;

【讨论】:

  • 我了解您的解决方案为何有效。谢谢约翰?
【解决方案2】:

您可以使用[] 对其进行索引,只要您不尝试访问向量之外的元素...或者为了更安全,如果您需要对可以使用基于范围的每个元素执行某些操作for 循环:

for(auto& object : objects) 
   object->someFunction();

【讨论】:

  • 因为objectObject*,所以它必须是object-&gt;someFunction();
  • 是的,一旦我使用“->”就可以了?
  • @Eljay 注意到了,我已经编辑了
猜你喜欢
  • 2010-12-27
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
相关资源
最近更新 更多