共用方式為


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 記憶體管理例程的其他智慧指標的基礎,例如 CComQIPtrCComPtr。 衍生類別會新增自己的建構函式和運算元,但依賴 所提供的 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 ,然後將 指派p2CComPtrBase::pCComPtrBase當物件取得指標的擁有權時,它會在指標上自動呼叫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_CLASSNOTREGCLASS_E_NOAGGREGATIONCO_E_CLASSSTRINGE_NOINTERFACE 失敗時傳回 。 如需這些錯誤的描述,請參閱 CoCreateClassInstanceCLSIDFromProgID

備註

如果呼叫方法的第一種形式, 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
物件的指標。

傳回值

如果 CComPtrBasepT 指向相同的物件,則傳回 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

另請參閱

類別概觀