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

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

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

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

我希望维护 intIErrorInfo 错误信息之间的这种映射。

但是,我不确定是否可以执行以下操作:
CComPtr<IErrorInfo> result;
GetErrorInfo(0, &pErrInfo);

ErrorMap.insert(std::make_pair(0, result));

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

最佳答案

您需要将 CComPtr 包装在 CAdapt 中才能使其工作。

关于c++ - 我可以在 std::map 中使用 CComPtr 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10197146/

10-10 04:15