将unique_ptr移动到地图后无法访问

时间:2014-12-16 03:01:21

标签: c++ c++11

我正在尝试将unique_ptr插入到地图中,然后在其成员稍后访问该地图。 This question让我不确定我是否正在走上正确的道路。一旦我试图将对象移动到地图中,指针就变得无效,我无法访问成员。

在这里做什么是正确的,以确保这一举动真的发生?我试图通过添加发布等来明确,因为当这个retry指针超出范围时,我不希望该对象被销毁。似乎工作正常,但地图中的对象是垃圾数据(实际上是0)。

if (retries.end() == pIt)
{
    // create new retry request and keep track of it
    unique_ptr<Retry> retry(new Retry(context, this));
    retries.insert(make_pair(callback, move(retry)));
    retry.release();
}

...

pIt = retries.find(callback);

int attempts = pIt->second->attempts // ACCESS VIOLATION

地图定义:

map<CComPtr<ISomething>, unique_ptr<Retry>, ISomethingComparitor> retries;

0 个答案:

没有答案