我将shared_ptr的矢量声明为shared_ptr的矢量,像这样的对象...
std::shared_ptr<std::vector<std::shared_ptr<my_obj_t>>> vec =
std::make_shared<std::vector<std::shared_ptr<my_obj_t>>>();
我的问题是我需要访问向量内部使用的数组中的第一个元素。在将其更改为对象的shared_ptr之前,它只是一个对象,我使用了data()。
但是现在有了shared_ptr的向量,我不确定如何访问第一个元素,以便可以向其添加偏移量并返回my_obj_t的指针。
我正尝试使用
(my_vec->data() + offset)
...其中func需要指向my_obj_t数组的指针。
有想法吗?
更新: 在我将其用作...之前
std::shared_ptr<std::vector<my_obj_t>> vec =
std::make_shared<std::vector<my_obj_t>>();
我将通过
进行访问(vec->data() + offset)
答案 0 :(得分:1)
要引用my_obj_t
指向的offset
*my_vec->at(offset)
不是 my_obj_t
数组任何地方
答案 1 :(得分:0)
std::make_shared<std::vector<std::shared_ptr<my_obj_t>>>()
这将构造一个shared_ptr
s的空向量。
我的问题是我需要访问所用数组中的第一个元素 在向量内部。
由于向量为空,因此您正在想象的内部数组可能还不存在。因此,无法访问它的第一个元素。您必须先添加元素,然后才能使用它们。
答案 2 :(得分:0)
克里斯显然没有做出答案,并且因为它是最干净的,所以这就是我所使用的。
(*my_vec)[offset]->get()