Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Intelligens mutatóosztály a COM-felület mutatóinak kezeléséhez.
Szemantika
template<class T>
class CComPtr
Paraméterek
T
A tárolandó mutató típusát meghatározó COM-felület.
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
CComPtr::CComPtr |
A konstruktor. |
Nyilvános operátorok
| Név | Description |
|---|---|
CComPtr::operator = |
Egy mutatót rendel a tagmutatóhoz. |
Megjegyzések
Az ATL a COM-felület mutatóit használja CComPtr és CComQIPtr kezeli. Mindkettő származik, CComPtrBaseés mindkettő automatikus hivatkozásszámlálást végez.
Az CComPtr osztályok automatikus CComQIPtr hivatkozásszámlálással kiküszöbölhetik a memóriavesztést. Az alábbi függvények mindkettő ugyanazt a logikai műveletet hajtják végre. A második verzió azonban kevésbé lehet hibalehetőség, mert az osztályt CComPtr használja:
// 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
A hibakeresési buildekben az atlsd.lib csatolása a kódkövetéshez.
Öröklési hierarchia
CComPtr
Requirements
Fejléc:atlbase.h
CComPtr::CComPtr
A konstruktor.
CComPtr() throw ();
CComPtr(T* lp) throw ();
CComPtr (const CComPtr<T>& lp) throw ();
Paraméterek
lp
A felületmutató inicializálására szolgál.
T
COM-felület.
Megjegyzések
Az argumentumhívást AddReflpkezdeményező konstruktorok, ha nem nullmutató. A nem null értékű objektumok meghívást Release kapnak a CComPtr objektum megsemmisítésére, vagy ha egy új objektum van hozzárendelve a CComPtr objektumhoz.
CComPtr::operator =
Hozzárendelés-operátor.
T* operator= (T* lp) throw ();
T* operator= (const CComPtr<T>& lp) throw ();
Visszaadott érték
Mutatót ad vissza a frissített CComPtr objektumhoz
Megjegyzések
Ez a művelet hozzáadja az új objektumot, és felszabadítja a meglévő objektumot, ha van ilyen.