CComPtr替代gcc?

时间:2012-06-26 13:10:08

标签: c++ com smart-pointers

我正在做一些COM编程,我的编译器是gcc。这意味着CComPtr不适合我。如何使用Boost轻松实现替换?我需要的语义是:

  • 复制时调用AddRef

  • 销毁时调用Release

  • 额外:能够判断它指向的对象是否仍然有效(不确定是否可行)

我认为可以将shared_ptr与自定义删除器一起使用,但我对这些功能并不是很熟悉(我也不知道如何调用AddRef和{ {1}})。我知道我可以手工制作这个类,但我很确定这个功能在Boost中以通用形式提供。

2 个答案:

答案 0 :(得分:3)

查看HILO项目,它推出了自己的CComPtr实现。

答案 1 :(得分:2)

我不确定所需函数AddRefRelease的语义是什么,但是:

您可以使用boost::intrusive_ptr并使用两个免费函数intrusive_ptr_add_refintrusive_ptr_release来调用增加/减少参考计数器。那些人可能会在您的对象上调用AddRefRelease函数。当计数器到达0时,您必须自己处理删除。