Udostępnij za pośrednictwem


Klasa CComPtr

Klasa inteligentne wskaźnik zarządzania wskaźników interfejsów COM.

template<
   class T 
>
class CComPtr

Parametry

  • T
    Interfejs COM, określając typ wskaźnika, które mają być przechowywane.

Członkowie

ezzw7k98.collapse_all(pl-pl,VS.110).gifPubliczne konstruktory

Nazwa

Opis

CComPtr::CComPtr

Konstruktor.

ezzw7k98.collapse_all(pl-pl,VS.110).gifPodmioty publiczne

Nazwa

Opis

CComPtr::operator =

Przypisuje wskaźnik wskaźnik Członkowskich.

Uwagi

Używa ATL CComPtr i CComQIPtr do wskaźników interfejsów COM zarządzania.Oba wynikają z CComPtrBase, i wykonać obie odniesienia automatycznego zliczania.

CComPtr i CComQIPtr klasy może pomóc wyeliminować przecieki pamięci, wykonując odniesienia automatycznego zliczania.Następujące funkcje oba wykonywać te same operacje logiczne; należy jednak zauważyć, jak druga wersja może być mniej podatne za pomocą CComPtr klasy:

// 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

W kompilacjach debugowania łącze atlsd.lib do śledzenia kodu.

Hierarchii dziedziczenia

CComPtrBase

CComPtr

Wymagania

Nagłówek: atlbase.h

Zobacz też

Informacje

CComPtr::CComPtr

CComQIPtr::CComQIPtr

Inne zasoby

Omówienie klasy ATL