Это мой конструктор:
CMSATools::CMSATools()
{
m_pInterface = NULL;
HRESULT hr;
hr = m_pInterface.CreateInstance(__uuidof(MSAToolsLibrary::MSAToolsLibraryClass));
if (FAILED(hr))
{
// TODO }
}
m_pInterface определяется:
MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;
Если m_pInterface
является указателем смарт-объекта COM, как CComPtr, вам не нужно явно уничтожать его. Когда умный указатель выходит из области видимости, например, когда ~CMSATools
вызывается деструктор, или когда интеллектуальному указателю присваивается новое значение, он уменьшает счетчик ссылок COM-объекта, на который он в данный момент содержит указатель. Когда счетчик ссылок COM-объекта падает до 0, он разрушается сам.
Других решений пока нет …