我基本上是在尝试通过引用传递,以便函数对向量所做的更改在函数范围之外是永久性的。我是否正确地认为传递一个指针向量足以自行完成此任务?这在我的脑海中完全有道理,但我只是想确认我没有以某种方式在这里犯错误。
void updateCursors(vector<cursor*> cursors)
这应该足以更改这些指针指向的对象中的数据,是吗?
您可以通过引用传递向量 -
vector<cursor*>& cursors
但是你不应该在向量中持有指针。推荐的方法是保存可复制/可移动的对象 -
vector<cursor>& cursors
“这应该足以改变这些指针所指向的对象中的数据了吧?”
当您将向量传递给此函数时,将创建副本(因为它是按值传递),但由于它是指针向量,是的,因此对对象的更改将在外部可见。
但是最好通过引用传递它,这样就不会创建冗余副本:
void updateCursors(vector<cursor*>& cursors)
另请注意,使用裸指针会带来丑陋的内存管理。如果可能的话,我建议你使用对象向量(vector<cursor>
),或者如果你真的有充分的理由使用指针,那么我建议你使用智能指针(shared_ptr<cursor>
而不是cursor*
)。这个问题可以帮助你:RAII and smart pointers in C++