錯誤:在 Lambda 表達式中捕獲外部變數
使用 lambda 表達式時,指定如何捕獲外部變數至關重要。在提供的程式碼中,std::remove_if 演算法中的 lambda 表達式需要存取外部變數 flagId。但是,報告的錯誤表明缺少捕獲模式。
解:
要解決此問題,必須使用方括號 ([ ])。這允許 lambda 表達式存取其範圍內的外部變數。主要有三種捕獲模式:
對於提供的程式碼,適當的捕獲模式是透過引用,因為它需要存取 flagId 的更新值。因此,修正後的 lambda 表達式為:
<code class="cpp">[&flagId](Flag& device) { return device.getId() == flagId; }</code>
透過指定捕獲模式,lambda 表達式可以正確存取外部變數 flagId 並執行所需的操作。
以上是如何正確捕捉Lambda表達式中的外部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!