gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:21:14 25 4
gpt4 key购买 nike

我正在用 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 中为了这个工作。

The adapter class CAdapt is useful because many container classes (such as the STL container classes) expect to be able to obtain the addresses of their contained objects using the address-of operator. The redefinition of the address-of operator can confound this requirement, typically causing compilation errors and preventing the use of the unadapted type with that container. CAdapt provides a way around those problems.

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com