2012-01-25 12 views
0

我有一堂課。它有一個功能void delete_ptr(void *);void push_into(std::set<my_string> ** pps);。我有這個類的10個實例。每個分配在不同的堆上。我在主堆中有我的程序,和我的地圖一樣。我想用我的main中的映射調用我的每個類實例push_into。每個push_into都會調用(**pps).insert(std::string("Hello str"));(**pps).insert("Hello char");。如何創建my_string類,該類將保留**std::string以及ptrdelete_ptr類創建my_string類實例?如何創建將std :: string和ptr保留到創建該包裝器實例的類的特殊類函數的std :: string包裝器?

我想知道的主要目標是:

  • 如何創建它的構造,使之保持指向字符串和實例創建它的delete_ptr?
+1

提供您的delete_ptr作爲自定義釋放器您可能要查看分配器。這種方法是不同的,但比您描述的更具可擴展性。 –

回答

1

您可以使用boost::shared_ptrcustom deallocator。使用boost::bind

+0

是否有可能讓my_string至少試圖讓ptr到它的創建者的'delete_ptr'? – myWallJSON

+0

你需要'delete_ptr'來刪除'my_string'嗎? 'shared_ptr'會爲你處理。只需在'set'中存儲'boost :: shared_ptr ',爲它們提供自定義比較器並在構造時提供指向'delete_ptr'的指針。請評論,如果你需要一個例子,我明天會發布,現在我需要回家 –

+0

我的主要觀點是隱藏某些API用戶,他發送除字符串以外的東西進入設置...) – myWallJSON

相關問題