Aracılığıyla paylaş


CComPtr sınıfı

com arabirim işaretçilerine yönetmek için bir akıllı işaretçi sınıf.

template<
   class T 
>
class CComPtr

Parametreler

  • T
    Depolanmak üzere işaretçi türünü belirleyen bir com arabirimi.

Üyeler

ezzw7k98.collapse_all(tr-tr,VS.110).gifOrtak Oluşturucusu

Ad

Description

CComPtr::CComPtr

Oluşturucu.

ezzw7k98.collapse_all(tr-tr,VS.110).gifOrtak İşleçler

Ad

Description

CComPtr::operator =

Üye İşaretçi İşaretçi atar.

Notlar

atl kullanan CComPtr ve CComQIPtr com arabirim işaretçilerine yönetmek için.Her ikisi de, türetilmiştir CComPtrBase, ve her ikisi de otomatik başvuru sayım gerçekleştirin.

CComPtr ve CComQIPtr sınıfları otomatik başvuru sayımı gerçekleştirerek bellek sızıntıları ortadan kaldırmak yardımcı olabilir.Aşağıdaki işlevleri hem mantıksal işlemlerin aynısını gerçekleştirir; Ancak, nasıl ikinci sürümü kullanarak daha az hataya olabileceğine dikkat edin CComPtr sınıfı:

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

Hata ayıklama yapılarında kod izleme atlsd.lib bağlantı.

Devralma hiyerarşisi

CComPtrBase

CComPtr

Gereksinimler

Başlık: atlbase.h

Ayrıca bkz.

Başvuru

CComPtr::CComPtr

CComQIPtr::CComQIPtr

Diğer Kaynaklar

atl sınıfına genel bakış