共用方式為


IEnumOnSTLImpl 類別

這個類別會根據 C++ 標準程式庫集合定義列舉值介面。

語法

template <class Base,
    const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base

參數

基地
COM 列舉值。 如需範例,請參閱 IEnumString

piid
列舉值介面之介面識別碼的指標。

T
列舉值介面所公開的專案類型。

複製
複製 原則類別

CollType
C++ 標準程式庫容器類別。

成員

公用方法

名稱 描述
IEnumOnSTLImpl::Clone Clone 的實作
IEnumOnSTLImpl::Init 初始化列舉程式。
IEnumOnSTLImpl::Next Next 的實作
IEnumOnSTLImpl::Reset Reset 的實作
IEnumOnSTLImpl::Skip Skip 的實作

公用資料成員

名稱 描述
IEnumOnSTLImpl::m_iter 反覆運算器,表示列舉值在集合中的目前位置。
IEnumOnSTLImpl::m_pcollection 包含要列舉之專案的 C++ 標準程式庫容器指標。
IEnumOnSTLImpl::m_spUnk 提供 IUnknown 集合之 物件的指標。

備註

IEnumOnSTLImpl 提供 COM 列舉值介面的實作,其中列舉的專案會儲存在 C++ 標準程式庫相容容器中。 這個類別類似于 CComEnumImpl 類別,該類別會根據陣列提供列舉值介面的實作。

注意

如需 與 IEnumOnSTLImpl 之間 CComEnumImpl 進一步差異的詳細資訊,請參閱 CComEnumImpl::Init

一般而言,您 不需要 從這個介面實作衍生來建立自己的列舉值類別。 如果您想要根據 C++ 標準程式庫容器使用 ATL 提供的列舉值,建立 CComEnumOnSTL 實例比較常見,或建立集合類別,其會藉由衍生自 ICollectionOnSTLImpl 來傳回列舉值。

不過,如果您需要提供自訂列舉值(例如,除了列舉值介面之外公開介面的列舉值,也可以衍生自這個類別。 在此情況下,您可能需要覆寫 Clone 方法以提供您自己的實作。

繼承階層架構

Base

IEnumOnSTLImpl

需求

標頭: atlcom.h

IEnumOnSTLImpl::Init

初始化列舉程式。

HRESULT Init(
    IUnknown* pUnkForRelease,
    CollType& collection);

參數

pUnkForRelease
[in] IUnknown 在列舉值存留期間必須保持運作的物件指標。 如果不存在這類物件,則傳遞 Null。

collection
保存要列舉之專案的 C++ 標準程式庫容器參考。

傳回值

標準 HRESULT 值。

備註

如果您將參考傳遞 Init 至另一個物件中保留的集合,您可以使用 pUnkForRelease 參數來確保物件及其保存的集合,只要列舉值需要它即可使用。

您必須先呼叫這個方法,才能將指標傳遞回任何用戶端的列舉值介面。

IEnumOnSTLImpl::Clone

這個方法提供 Clone 方法的實作 ,方法是建立 類型的 CComEnumOnSTL 物件、使用目前 物件所使用的相同集合和反覆運算器初始化它,並在新建立的物件上傳回 介面。

STDMETHOD(Clone)(Base** ppEnum);

參數

ppEnum
[out]從目前列舉值複製之新建立物件的枚舉器介面。

傳回值

標準 HRESULT 值。

IEnumOnSTLImpl::m_spUnk

提供 IUnknown 集合之 物件的指標。

CComPtr<IUnknown> m_spUnk;

備註

這個智慧型指標會在傳遞至 IEnumOnSTLImpl::Init 的物件上維護參考,確保它在列舉值存留期間保持運作。

IEnumOnSTLImpl::m_pcollection

這個成員指向提供資料驅動列舉值介面實作的集合。

CollType* m_pcollection;

備註

這個成員是由呼叫 IEnumOnSTLImpl::Init 初始化。

IEnumOnSTLImpl::m_iter

這個成員會保存反覆運算器,用來標記集合中的目前位置,並巡覽至後續元素。

CollType::iterator m_iter;

IEnumOnSTLImpl::Next

這個方法提供 Next 方法的實作

STDMETHOD(Next)(
    ULONG celt,
    T* rgelt,
    ULONG* pceltFetched);

參數

塞爾特人
[in]要求的元素數目。

rgelt
[out]要填入元素的陣列。

pceltFetched
[out]實際在 rgelt 傳回的元素數目。 如果清單中的 celt 元素少於 celt 元素,這個值可能會小於 celt

傳回值

標準 HRESULT 值。

IEnumOnSTLImpl::Reset

此方法提供 Reset 方法的實作

STDMETHOD(Reset)(void);

傳回值

標準 HRESULT 值。

IEnumOnSTLImpl::Skip

這個方法提供 Skip 方法的實作

STDMETHOD(Skip)(ULONG celt);

參數

塞爾特人
[in]要略過的專案數目。

傳回值

標準 HRESULT 值。

另請參閱

類別概觀