Ralat: Menangkap Pembolehubah Luaran dalam Ungkapan Lambda
Apabila menggunakan ungkapan lambda, adalah penting untuk menentukan cara pembolehubah luaran harus ditangkap. Dalam kod yang disediakan, ungkapan lambda dalam algoritma std::remove_if memerlukan akses kepada flagId pembolehubah luaran. Walau bagaimanapun, ralat yang dilaporkan menunjukkan bahawa mod tangkapan tiada.
Penyelesaian:
Untuk menangani isu ini, mod tangkapan mesti dinyatakan secara eksplisit menggunakan kurungan segi empat sama ([ ]). Ini membolehkan ungkapan lambda mengakses pembolehubah luaran dalam skopnya. Terdapat tiga mod tangkapan utama:
Untuk kod yang disediakan, mod tangkapan yang sesuai adalah dengan rujukan, kerana ia perlu mengakses nilai flagId yang dikemas kini. Oleh itu, ungkapan lambda yang diperbetulkan ialah:
<code class="cpp">[&flagId](Flag& device) { return device.getId() == flagId; }</code>
Dengan menentukan mod tangkapan, ungkapan lambda boleh mengakses flagId pembolehubah luaran dengan betul dan melaksanakan operasi yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Pembolehubah Luaran dengan Betul dalam Ungkapan Lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!