从对指针向量的引用访问元素

Accessing element from reference to vector of pointers

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

std::vector<Object*>& objects;

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

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

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

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

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

Object *o = objects[42];

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

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