//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&,但我怀疑这是问题所在。

除此之外,这段代码没有什么错。

07-25 22:29