【发布时间】:2011-10-25 14:00:54
【问题描述】:
我有本机 C++ 类 SrcClass,其中包含以下内容:
std::vector<shotEntry> objectsQueue;
bool getRelatedEntry(const entryToProcess *entriesDeets, int &i) const {
if (i >= (int)objectsQueue.size()) {
i = 0;
return false;}
if (!objectsQueue.size()) return false;
entriesDeets = &(objectsQueue[i++]);
return true;
}
在我的客户中,我有:
const entryToProcess *entriesDeets = NULL;
int i = 0;
while (srcObj->getRelatedEntry(entriesDeets, i)) {
当我单步执行getRelatedEntry 形式参数时,entriesDeets 在返回之前按预期更新。返回时客户端的实际参数没有更新。
这是我离开两个月后回到的一些大项目。我很确定我所做的最后一次重构是引入这些 damnable vectors。当我弄乱标题时,编译需要很长时间。我是否对 C# 的初始化一次/只读/常量感到困惑?我可以让客户端返回只读本机对象吗?
【问题讨论】:
-
您可能对从函数返回多个值的其他方式感兴趣:stackoverflow.com/q/321068/10077
-
在向量内使用指向对象的指针时要小心。如果将项目添加到向量中,则可能会发生重新分配,一切都会移动,并且您的指针将无效。
-
我的代码与 UI 使用的任何线程完全同步。我实际上只是抓住指针,将其更新到屏幕然后丢弃它。
标签: c++ pointers parameters vector constants