Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Memindahkan Pemilikan `unique_ptr` dengan Betul kepada Lambda dalam C ?
Memelihara Pemilikan dalam Lambda dengan Penunjuk Unik
Dalam C , unique_ptr direka bentuk untuk mengurus pemilikan objek tunggal secara eksklusif. Apabila cuba menangkap unique_ptr ke dalam ungkapan lambda, pemilikan boleh menjadi samar-samar. Begini cara untuk menangani isu ini:
Pada mulanya, percubaan untuk menangkap unique_ptr sebagai rujukan dalam lambda mungkin gagal untuk disusun. Untuk memindahkan pemilikan kepada lambda secara eksplisit, C 14 memperkenalkan tangkapan umum lambda:
auto getAction = [](std::unique_ptr<MyClass> psomething) { // Ownership now belongs to the lambda return [a = std::move(psomething)]() { a->do_something(); // psomething is released after this point }; };
Pemindahan Pemilikan dengan Pelaksanaan Salin dan Alih:
Dalam kod anda yang dikemas kini, anda telah menentukan fungsi salin dan alih untuk mengendalikan pelbagai jenis rujukan. Untuk memastikan pemindahan pemilikan yang betul, pertimbangkan perkara berikut:
Dengan pengubahsuaian ini, kod anda harus berfungsi seperti yang diharapkan, mengekalkan pemilikan dalam ungkapan lambda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memindahkan Pemilikan `unique_ptr` dengan Betul kepada Lambda dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!