这是一个伪造的代码示例
vector<Fred> gFred;
{
// init gFred
Fred &fred = gFred[0];
size_t z = 0;
do
{
fred = gFred[z];
// do odd processing with fred
z++;
}
while (fred.lastElementInSet == 0);
}
引起我注意的是 gFred[0] 被覆盖了。 这让我想到,与其将 init fred 作为对新元素的引用,
fred = gFred[z];
实际发生的是 gFred[1] 正在覆盖 gFred[0]。
我在想在这里做的正确的事情是,将自己的头向上敲几下,然后将其转化为指针实现并继续我的生活。
我的诊断是否正确?还是我需要更多的教育?
最佳答案
是的,你在那里得到了一个结构拷贝。引用无法重新绑定(bind),即它们在初始化后保持不变。
而且您的解决方案也很合适。不过不知道会不会敲自己的头。
关于c++ - 我在这里得到结构拷贝吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592067/