//this returns a boost::ptr_vector<Ordre>
auto& vec = ptf.listeOrdre().liste();
auto it = std::find_if( vec.begin(), vec.end(),
[message](Ordre& ordre){return ordre.id() == message->id();}
);
if( it == vec.end())
{
return;
}
Ordre& ordre = *it;
我对应在lambda参数和最后一行代码上使用的“&”或“ *”有疑问。
有人看到错了吗?
我在生产中发生崩溃,我怀疑这段代码
谢谢
最佳答案
最后一行看起来正确。ptf.listeOrdre()
可能是一种错误。如果它返回一个值,它将被复制。那么vec
将引用一个临时对象。
lambda的参数应为const&
,但我怀疑这是问题所在。
除此之外,这段代码没有什么错。