首頁 >後端開發 >C++ >如何將自訂刪除器與'std::unique_ptr”成員變數一起使用? ````

如何將自訂刪除器與'std::unique_ptr”成員變數一起使用? ````

Barbara Streisand
Barbara Streisand原創
2024-12-15 17:07:11751瀏覽

How to Use Custom Deleters with `std::unique_ptr` Member Variables?
```

將自訂刪除器與std::unique_ptr 成員變數一起使用

使用需要特定刪除機制的第三方類別時,您可能會遇到需要以下情況的情況:使用帶有std::unique_ptr 成員變數的自訂刪除器。本文提供了實現此目的的解決方案。

問題

想像一下,您有一個帶有 std::unique_ptr 類型的成員變數的類別 Foo。在這種場景下,第三方類別 Bar 有專門的 create() 和 destroy() 函數,用於物件建立和銷毀。

獨立函數範例

在獨立函數中,您可以使用具有std::unique_ptr 的自訂刪除器,如下所示:

void foo() {
    std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); });
    ...
}

將自訂刪除器,如下所示:

將自訂刪除器,如下所示:
class Foo {

    std::unique_ptr<Bar, void(*)(Bar*)> ptr_;

    // ...

public:

    Foo() : ptr_(create(), destroy) { /* ... */ }

    // ...
};

將自訂刪除器,如下所示:
  • 將自訂刪除器,如下所示:
  • 將自訂定義刪除器與Member結合使用變數
要在使用成員變數時實現相同的功能,解決方案如下:

在此程式碼中:聲明了ptr_成員變數作為Bar類型的unique_ptr。 自訂刪除器被指定為第二個模板參數,它是一個函數指標帶有簽名 void(*)(Bar*)。 類別建構子使用 create() 和 destroy() 函數作為刪除器來初始化 ptr_。 這種方法允許您方便地對 std::unique_ptr 成員變數使用自訂刪除器,確保即使對於第三方類別也能進行正確的資源管理。

以上是如何將自訂刪除器與'std::unique_ptr”成員變數一起使用? ````的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn