爲了克服給予C庫回調到C++成員函數的impossibility,要實現這樣的:通過使用地圖,其中包含datahandle的*地址爲索引std :: map,通過指針(指向某個對象的相關結構)存儲指針(指向對象)。使用哪些類型?
SomeObject* findSomeObjectByHandlePointer(datahandle *dh) { }..
,和地址* SomeObject的價值。
當創建SomeObject時,它會生成一組數據句柄,它們是對象唯一的。然後,它將一個指向* datahandle和靜態回調函數的指針傳遞給C庫,然後C庫回調並返回一個指向數據句柄的指針,該指針又可以與SomeObject關聯。
除了安全但速度慢的<string, SomeObject*>
之外,您還可以推薦哪些類型的指針值存儲在地圖中?
This answer告訴我也要避免使用auto_ptr
。
也許我錯過了一些東西,但爲什麼回調不能接收一個指向對象本身的指針(轉換爲'void *'),從而避免了任何類型的查找? – 2011-04-22 19:20:48
'string'是如何涉及的? – 2011-04-22 19:23:00
我想你錯過了那篇文章的第一句話。 **不要。** ...如果您必須支持遺留代碼,那麼您可以創建一個全局對象或單例對象,並將方法導出爲頂級非成員函數。 – AJG85 2011-04-22 19:25:01