我可以在 std::map 中使用 CComPtr 吗?



我正在用C++的Windows COM编写一个程序,我正在使用CComPtr作为智能指针。

我找不到答案的问题是 - 我可以在std::map中使用CComPtr吗?

我有以下代码片段(简化):

std::map<int, CComPtr<IErrorInfo> > ErrorMap;

我希望在intIErrorInfo错误信息之间保持此映射。

但是我不确定我是否可以执行以下操作:

CComPtr<IErrorInfo> result;
GetErrorInfo(0, &pErrInfo);
ErrorMap.insert(std::make_pair(0, result));

我担心result智能指针的所有权,以及当ErrorMap被销毁时它是否会正确释放?

您需要将 CComPtr 包装在 CAdapt 中才能正常工作。

适配器类 CAdapt 很有用,因为许多容器类 (如 STL 容器类)期望能够获得 使用地址运算符的所包含对象的地址。 地址运算符的重新定义可能会混淆这一点 要求,通常会导致编译错误并防止 对该容器使用不适应的类型。CAdapt提供了一种方式 围绕这些问题。

相关内容

  • 没有找到相关文章

最新更新