c++ - ComPtr 与 CComPtr,As 与 QueryInterface
问题描述
我只想知道和之间的确切区别ComPtr
,CComPtr
以及是否ComPtr::As()
是类似的CComPtr::QueryInterface()
?我阅读了两者的文档,但这个问题没有明确的答案......
解决方案
ComPtr 和 CComPtr 之间的确切区别
它们只是来自不同框架的 COM 接口智能包装器。ComPtr
是 Windows 运行时 C++ 模板库 (WRL) 的一部分。CComPtr
是活动模板库 (ATL) 的一部分。它们为各自的框架服务于类似的目的 - 提供自动引用计数和 refcount-safe 类型转换。但是您不应该将它们互换使用。如果您正在编写 WRL 代码,请使用ComPtr
. 如果您正在编写 ATL 代码,请使用CComPtr
.
ComPtr::As() 是否类似于 CComPtr::QueryInterface()?
是的,因为As()
只是在内部调用QueryInterface()
。
推荐阅读
- python - 使用 asyncio 返回结果
- javascript - 如何改进我的 YouTube 视频上传数据 v3
- python - 您如何使用“while true”定义一个函数以使错误的用户输入循环回到 Python 3.8 上的行首
- java - MapStruct - 找不到类型的返回值的转换器
- sql - 如何解决 pgadmin 上的错误 23505?
- date - CakePHP - Date::i18nFormat() 大写
- angular - Angular 通用“npm run prerender”命令永不停止
- postgresql - 为什么我的 postgresql csv 导出的行数比表多?
- django - Django collectstatic 不会从 react npm build 文件夹中收集媒体文件
- assembly - 汇编程序 - 使用显示字符串而不是寄存器