【发布时间】:2011-06-20 03:06:32
【问题描述】:
在将向量的引用作为参数传递时我遇到了一些困难。最初它是一个指向指针向量的指针,被调用的函数会改变调用它的任何对象的属性。比如我用过:
(*myVector)[i]->myFunction();
一切都很完美。 myFunction() 将转换作为 myVector 的当前索引的任何对象。
现在我改变了向量来保存一组对象,而不是像原来那样指向对象的指针。我没有传递指向向量的指针,而是传递了它的引用。我访问该功能如下:
myVector[i].myFunction();
编译后,我发现 myFunction() 不再具有与以前相同的结果。我使用了一个断点并看到它正在改变它应该改变的属性,但是,这些改变从来没有影响到原始对象。即使断点显示 myVector[i] 的来源被更改,也没有最终翻译。
我尝试将指针传递给对象向量并使用:
(*myVector)[i].myFunction();
同样的事情,它编译但没有工作。
最后我尝试简单地传递对向量中第一个对象的引用,当然效果很好:
myObject.myFunction();
关于向量的引用是否缺少一些固有的东西?为什么指向指针向量的指针有效但对对象向量的引用不起作用?传递的向量不应该是原始向量的别名吗?为什么引用显示了变化,而不是它引用的对象?
除非我使用指针向量而不是对象向量,否则为什么我的更改不会生效。
【问题讨论】:
-
对向量的引用没有什么特别之处。问题可能出在其他地方。您能否发布一些更完整的代码,以便我们了解一些上下文?
-
啊谢谢大家,说得有道理,我不知道我怎么错过了。
-
如果对您有用,您可能希望将答案标记为“已接受”(通过单击复选标记)。
标签: c++ pointers vector reference