Classe di CComPtr

Una classe del puntatore intelligente per gestire i puntatori all'interfaccia COM.

template<
   class T 
>
class CComPtr

Parametri

  • T
    Un'interfaccia COM che specifica il tipo di puntatore da archiviare.

Membri

ezzw7k98.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

CComPtr::CComPtr

Costruttore.

ezzw7k98.collapse_all(it-it,VS.110).gifOperatori pubblici

Nome

Descrizione

CComPtr::operator =

Assegna un puntatore a un puntatore a un membro.

Note

ATL utilizza CComPtr e CComQIPtr per gestire i puntatori all'interfaccia COM.Entrambi sono derivati da CComPtrBasee entrambi eseguono il conteggio dei riferimenti automatico.

Le classi CComQIPtr e CComPtr possono risolvere le perdite di memoria esegue il conteggio dei riferimenti automatico.Le seguenti funzioni che eseguono le stesse operazioni logiche, tuttavia, nota come la seconda versione può essere meno soggetta a errori utilizzando la classe CComPtr :

// Error-checking routine that performs manual lifetime management
// of a COM IErrorInfo object
HRESULT CheckComError_Manual()
{
   HRESULT hr;
   CComBSTR bstrDescription; 
   CComBSTR bstrSource; 
   CComBSTR bstrHelpFile; 

   IErrorInfo* pErrInfo = NULL; // naked COM interface pointer
   hr = ::GetErrorInfo(0, &pErrInfo);
   if(hr != S_OK)
      return hr;

   hr = pErrInfo->GetDescription(&bstrDescription); 
   if(FAILED(hr))
   {
      pErrInfo->Release();   // must release interface pointer before returning
      return hr;
   }

   hr = pErrInfo->GetSource(&bstrSource);
   if(FAILED(hr))
   {
      pErrInfo->Release();   // must release interface pointer before returning
      return hr;
   }

   hr = pErrInfo->GetHelpFile(&bstrHelpFile);
   if(FAILED(hr))
   {
      pErrInfo->Release();   // must release interface pointer before returning
      return hr;
   }

   pErrInfo->Release();      // must release interface pointer before returning
   return S_OK;
}
// Error-checking routine that performs automatic lifetime management
// of a COM IErrorInfo object through a CComPtr smart pointer object
HRESULT CheckComError_SmartPtr()
{
   HRESULT hr;
   CComBSTR bstrDescription; 
   CComBSTR bstrSource; 
   CComBSTR bstrHelpFile; 

   CComPtr<IErrorInfo> pErrInfo; 
   hr = ::GetErrorInfo(0, &pErrInfo);
   if(hr != S_OK)
      return hr;

   hr = pErrInfo->GetDescription(&bstrDescription); 
   if(FAILED(hr))
      return hr;

   hr = pErrInfo->GetSource(&bstrSource);
   if(FAILED(hr))
      return hr;

   hr = pErrInfo->GetHelpFile(&bstrHelpFile);
   if(FAILED(hr))
      return hr;

   return S_OK;
}   // CComPtr will auto-release underlying IErrorInfo interface pointer as needed

Nelle build di debug, atlsd.lib collegamento per l'analisi del codice.

Gerarchia di ereditarietà

CComPtrBase

CComPtr

Requisiti

Header: atlbase.h

Vedere anche

Riferimenti

CComPtr::CComPtr

CComQIPtr::CComQIPtr

Altre risorse

I cenni preliminari sulle classi ATL