我正在尝试将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;