假设我有一个 array std::vector<Foo>
,我想遍历我所有的 foos 并像这样做一些事情:
for (auto foo : vecFoo)
foo.x = 10;
这最终什么都不做,因为它正在制作 vecFoo 内容的本地副本,而不是对其的引用。正确的循环如下:
for (auto& foo : vecFoo)
foo.x = 10;
这是我现在犯过几次的错误,所以我想找到一个解决方案,当我出错时会抓住我。我会对可以对结构执行的操作或可以打开的警告标志感到满意。我尝试将Foo
' 的复制构造函数设为私有,但最终我无法执行push_back
or emplace_back
,这显然不是我想要的。