CComPtrBase
類別
這個類別提供使用 COM 型記憶體例程之智慧型手機類別的基礎。
語法
template <class T>
class CComPtrBase
參數
T
要由智慧型指標參考的物件類型。
成員
公用建構函式
名稱 | 描述 |
---|---|
CComPtrBase::~CComPtrBase |
解構函式。 |
公用方法
名稱 | 描述 |
---|---|
CComPtrBase::Advise |
呼叫這個方法,以在的連接點與用戶端的接收之間建立 CComPtrBase 連接。 |
CComPtrBase::Attach |
呼叫此方法以取得現有指標的擁有權。 |
CComPtrBase::CoCreateInstance |
呼叫這個方法,以建立與指定類別標識碼或程式標識符相關聯的類別物件。 |
CComPtrBase::CopyTo |
呼叫這個方法,將指標複製到 CComPtrBase 另一個指標變數。 |
CComPtrBase::Detach |
呼叫此方法以釋放指標的擁有權。 |
CComPtrBase::IsEqualObject |
呼叫這個方法,以檢查指定的 IUnknown 是否指向與 CComPtrBase 對象相關聯的相同物件。 |
CComPtrBase::QueryInterface |
呼叫這個方法,以傳回指定介面的指標。 |
CComPtrBase::Release |
呼叫這個方法來釋放 介面。 |
CComPtrBase::SetSite |
呼叫這個方法,將物件的月臺 CComPtrBase 設定為 IUnknown 父物件的 。 |
公用運算子
名稱 | 描述 |
---|---|
CComPtrBase::operator T* |
轉換運算元。 |
CComPtrBase::operator ! |
NOT 運算子。 |
CComPtrBase::operator & |
運算子的 & 位址。 |
CComPtrBase::operator * |
指針對 * 運算符。 |
CComPtrBase::operator < |
小於運算子。 |
CComPtrBase::operator == |
相等運算子。 |
CComPtrBase::operator -> |
指針對成員運算符。 |
公用數據成員
名稱 | 描述 |
---|---|
CComPtrBase::p |
指標數據成員變數。 |
備註
這個類別提供使用 COM 記憶體管理例程的其他智慧指標的基礎,例如 CComQIPtr
和 CComPtr
。 衍生類別會新增自己的建構函式和運算元,但依賴 所提供的 CComPtrBase
方法。
需求
標頭: atlcomcli.h
CComPtrBase::Advise
呼叫這個方法,以在的連接點與用戶端的接收之間建立 CComPtrBase
連接。
HRESULT Advise(
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw) throw();
參數
pUnk
用戶端的 IUnknown
指標。
iid
連接點的 GUID。 一般而言,此 GUID 與連接點所管理的連出介面相同。
pdw
可唯一識別連線之 Cookie 的指標。
傳回值
S_OK
傳回成功,或失敗時發生錯誤HRESULT
。
備註
如需詳細資訊,請參閱AtlAdvise
。
CComPtrBase::Attach
呼叫此方法以取得現有指標的擁有權。
void Attach(T* p2) throw();
參數
p2
物件 CComPtrBase
會取得這個指標的擁有權。
備註
Attach
在現有的CComPtrBase::p
成員變數上呼叫 CComPtrBase::Release
,然後將 指派p2
給 CComPtrBase::p
。 CComPtrBase
當物件取得指標的擁有權時,它會在指標上自動呼叫Release
,如果對象的參考計數為0,就會刪除指標和任何已配置的數據。
CComPtrBase::~CComPtrBase
解構函式。
~CComPtrBase() throw();
備註
釋放 所指向的 CComPtrBase
介面。
CComPtrBase::CoCreateInstance
呼叫這個方法,以建立與指定類別標識碼或程式標識符相關聯的類別物件。
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL) throw();
參數
szProgID
ProgID 的指標,用來復原 CLSID。
pUnkOuter
如果為 NULL,表示物件未建立為匯總的一部分。 如果非 NULL,則為匯總物件的IUnknown
介面指標(控制)。IUnknown
dwClsContext
管理新建立之物件的程式代碼將執行的內容。
rclsid
與將用來建立對象的數據和程式碼相關聯的CLSID。
傳回值
S_OK
在成功、或 REGDB_E_CLASSNOTREG
、CLASS_E_NOAGGREGATION
、 CO_E_CLASSSTRING
或 E_NOINTERFACE
失敗時傳回 。 如需這些錯誤的描述,請參閱 CoCreateClassInstance
和 CLSIDFromProgID
。
備註
如果呼叫方法的第一種形式, CLSIDFromProgID
則會用來復原 CLSID。 然後,這兩種表單都會呼叫 CoCreateClassInstance
。
在偵錯組建中,如果 CComPtrBase::p
不等於 NULL,就會發生判斷提示錯誤。
CComPtrBase::CopyTo
呼叫這個方法,將指標複製到 CComPtrBase
另一個指標變數。
HRESULT CopyTo(T** ppT) throw();
參數
ppT
要接收指標之變數的 CComPtrBase
位址。
傳回值
成功時傳回 S_OK
,失敗時則傳回 E_POINTER
。
備註
將 CComPtrBase
指標 ppT
複製到 。 成員變數的 CComPtrBase::p
參考計數會遞增。
如果 ppT
等於 NULL,則會傳回錯誤HRESULT
。 在偵錯組建中,如果 ppT
等於 NULL,就會發生判斷提示錯誤。
CComPtrBase::Detach
呼叫此方法以釋放指標的擁有權。
T* Detach() throw();
傳回值
傳回指標的複本。
備註
釋放指標的擁有權、將 CComPtrBase::p
數據成員變數設定為NULL,並傳回指標的複本。
CComPtrBase::IsEqualObject
呼叫這個方法,以檢查指定的 IUnknown
是否指向與 CComPtrBase
對象相關聯的相同物件。
bool IsEqualObject(IUnknown* pOther) throw();
參數
pOther
要比較的 IUnknown *
。
傳回值
如果物件相同,則傳回 true,否則傳回 false。
CComPtrBase::operator !
NOT 運算子。
bool operator!() const throw();
傳回值
如果 CComHeapPtr
指標等於 NULL,則傳回 true,否則傳回 false。
CComPtrBase::operator &
運算子的 &
位址。
T** operator&() throw();
傳回值
傳回物件所 CComPtrBase
指向之物件的位址。
CComPtrBase::operator *
指針對 *
運算符。
T& operator*() const throw();
傳回值
傳回 的值 CComPtrBase::p
,也就是 對象所 CComPtrBase
參考之物件的指標。
如果偵錯組建,如果 CComPtrBase::p
不等於 NULL,就會發生判斷提示錯誤。
CComPtrBase::operator ==
相等運算子。
bool operator== (T* pT) const throw();
參數
pT
物件的指標。
傳回值
如果 CComPtrBase
和 pT
指向相同的物件,則傳回 true,否則傳回 false。
CComPtrBase::operator ->
指針對成員運算符。
_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();
傳回值
傳回數據成員變數的值 CComPtrBase::p
。
備註
使用此運算符可呼叫 物件所指向 CComPtrBase
之類別中的方法。 在偵錯組建中,如果 CComPtrBase
數據成員指向 NULL,就會發生判斷提示失敗。
CComPtrBase::operator <
小於運算子。
bool operator<(T* pT) const throw();
參數
pT
物件的指標。
傳回值
如果目前物件的指標小於所比較的指標,則傳回 true。
CComPtrBase::operator T*
轉換運算元。
operator T*() const throw();
備註
傳回類別範本中定義之對象數據類型的指標。
CComPtrBase::p
指標數據成員變數。
T* p;
備註
這個成員變數會保存指標資訊。
CComPtrBase::QueryInterface
呼叫這個方法,以傳回指定介面的指標。
template <class Q> HRESULT QueryInterface(Q
** pp) const throw();
參數
Q
需要介面指標的物件型別。
pp
接收要求介面指標的輸出變數位址。
傳回值
S_OK
在成功或E_NOINTERFACE
失敗時傳回 。
備註
此方法會呼叫 IUnknown::QueryInterface
。
在偵錯組建中,如果 pp
不等於 NULL,就會發生判斷提示錯誤。
CComPtrBase::Release
呼叫這個方法來釋放 介面。
void Release() throw();
備註
介面已發行,並 CComPtrBase::p
設定為 NULL。
CComPtrBase::SetSite
呼叫這個方法,將物件的月臺 CComPtrBase
設定為 IUnknown
父物件的 。
HRESULT SetSite(IUnknown* punkParent) throw();
參數
punkParent
父系介面的指標 IUnknown
。
傳回值
S_OK
傳回成功,或失敗時發生錯誤HRESULT
。
備註
此方法會呼叫 AtlSetChildSite
。