使用唯一指標在 Lambda 中保留所有權
在 C 中,unique_ptr 旨在專門管理單一物件的所有權。當嘗試將 unique_ptr 捕獲到 lambda 表達式中時,所有權可能會變得不明確。以下是解決此問題的方法:
最初,嘗試捕獲 unique_ptr 作為 lambda 中的引用可能會無法編譯。為了明確地將所有權轉移給lambda,C 14 引入了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 }; };
透過複製和移動實現進行所有權轉移:
在更新的程式碼中,您定義了複製和移動函數來處理不同類型的參考。為了確保正確的所有權轉移,請考慮以下事項:
透過這些修改,您的程式碼應該按預期工作,保留 lambda 表達式中的所有權。
以上是如何正確地將 `unique_ptr` 的所有權轉移到 C 中的 Lambda ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!