0
,而這些是我發現了什麼:指定shared_ptr的一個定製刪除,但符合我尋覓的計算器,瞭解如何specifiy爲shared_ptr的一個定製刪除錯誤
boost::shared_ptr<T> ptr(new T, std::mem_fun_ref(&T::deleteMe));
boost::shared_ptr<S> ptr(new S, std::ptr_fun(lib_freeXYZ));
我有一個類ISprite,這是抽象的類使用純虛函數destroy(),這個類可以使用libInterface-> createSprite(a.bmp)創建實例,現在我使用ISprite作爲另一個類中的成員變量,希望使用shared_ptr來包裝它,但是ISprite實例不能刪除,如果我有一個ISprite * a,並嘗試在另一個類的destrcutor中刪除一個,系統會崩潰,但它可以使用a-> destroy()釋放內存,所以如果我想使用shared_ptr包裝成員變量ISprite,我需要指定我自己的刪除器 爲了它。以下是我做的:
boost::shared_ptr<ISprite> ptr(system-
>createSprite("a.bmp"),std::mem_fun_ref(&ISprite::destroy));
但編譯都跟我 ...提振\ smart_ptr \詳細\ shared_count.hpp(132):
error C2664: 'void std::mem_fun_ref_t<_Result,_Ty>::operator()(_Ty &) const' :
cannot convert parameter 1 from 'ISprite *' to 'ISprite &'
我不知道是什麼錯在那裏,任何人都可以幫忙?太感謝了!
!!! ,它的工作原理,我會嘗試看到所有的應用程序工作或不! –
還有一個問題,我的ISprite變量是另一個類中的成員變量,所以我需要在構造函數中初始化它,然後如何初始化它?顯然我不能使用「ptr(system-> createSprite(」a.bmp「),std :: mem_fun(&ISprite :: destroy));」 –