CComPtr replacement for gcc?
CComPtr replacement for gcc?
我正在做一些COM编程,我的编译器是gcc。这意味着CComPtr对我不可用。如何使用 Boost 轻松实现替换?我需要的语义是:
-
复制时调用
AddRef
-
销毁时呼叫
Release
-
额外:能够判断它指向的对象是否仍然有效(不确定这是否可能)
我认为可以将shared_ptr
与自定义删除器一起使用,但我对这些功能不是很熟悉(我也不知道如何让它调用AddRef
和Release
)。我知道我可以手工制作这个类,但我很确定这个功能在 Boost 中以通用形式提供。
查看 HILO 项目,它推出了自己的 CComPtr 实现。
我不确定所需函数AddRef
和Release
的语义是什么,但是:
您可以使用boost::intrusive_ptr
并具有两个自由函数intrusive_ptr_add_ref
和intrusive_ptr_release
,将调用它们来增加/减少引用计数器。然后,这些函数可能会调用对象上的这些AddRef
和Release
函数。当计数器达到0
时,您必须自己处理删除。
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- GCC 优化了基于固定范围的 for 循环,就好像它具有更长的可变长度一样
- iostream GCC错误,转换为boost::filesystem::iostream for Windows
- 找不到 gcc 编译错误 cv.h for Opencv
- CComPtr replacement for gcc?
- 为什么我在构建 avin2/SensorKinect for android、NDK、gcc 时出现无法识别的选项"--dynamic-linker"错误
- 基于范围的 for 语句中的 GCC 错误
- 在哪里可以获得英特尔的 Tbb for gcc on Windows
- 启用核心转储是否需要-g for gcc
- 交叉编译libcurl for arm-linux-gnueabi-gcc
- 使用映射类型会产生GCC错误:预期的未限定id在' for '之前
- 如何使用gcc在windows for linux上进行跨平台编译
- 在这个For循环中发生了什么GCC优化
- 为什么我会"No manual entry for gcc"
- 使用 AT&T 内联汇编器 for GCC
- 忽略 GCC "error: braces around scalar initializer for type"错误。发出警告