我使用CreateInstance创建一个CComObject,然后调用AddRef。
通过调用QueryInterface创建Created对象接口指针。
然后这些接口指针存储在std :: map中以备将来使用。
在将来使用的一个函数中,需要从std :: map中删除该对象,因此我试图在从std :: map中删除对象之前调用 - > Release()方法。
但是在尝试调用对象Release()方法时遇到错误。
std::map<long,CAdapt<CComPtr<ITrain>>> m_map;
CComObject<ITrainStub> m_pTrain;
CComObject<ITrainStub>::CreateInstance(&m_pTrain);
m_pTrain->AddRef();
CComPtr<ITrain> m_Train;
m_pTrain->QueryInterface(IID_ITrain,(void**)&m_Train);
m_map[i] = m_Train;
在另一个函数中访问train对象:
iterator it = m_map.find(x);
CComPtr<ITrain> m_Train;
m_Train = it->second;
m_Train->Release();
m_map.erase(x);
在第二个函数中遇到了这个问题,其中Release方法在atlcomcli.h中提出错误说明_ATL ....