为了克服给予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