有一个对象列表并按每个对象调用一个函数,但是canot保留了上下文,例如:
std::list<Ob> objs;
Ob ob;
ob.settings(/*...*/);
objs.push_back(ob);
/*...*/
for (Ob obj : objs)
{
obj.increase();
}
Run Code Online (Sandbox Code Playgroud)
该increase()函数总结一个局部变量,例如:
class Ob
{
private:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
而......
Ob::increase(){ this->a++; }
Run Code Online (Sandbox Code Playgroud)
但a只增加内循环,如果调用10次canot保持最后一个值.
如何保持对象的上下文?
Run Code Online (Sandbox Code Playgroud)for (Ob obj : objs)
这会在每次循环迭代中创建一个副本,并在循环迭代完成时将其丢弃.
您想要使用引用:
for (Ob& obj : objs)
Run Code Online (Sandbox Code Playgroud)