Sdílet prostřednictvím


IEnumOnSTLImpl – třída

Tato třída definuje rozhraní enumerátoru založené na kolekci standardní knihovny jazyka C++.

Syntaxe

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

Parametry

Základní
Enumerátor MODELU COM. Příklad najdete v souboru IEnumString .

piid
Ukazatel na ID rozhraní enumerátoru.

T
Typ položky vystavené rozhraním enumerátoru.

Kopírování
Třída zásady kopírování.

Typ kola
Třída kontejneru standardní knihovny C++.

Členové

Veřejné metody

Jméno popis
IEnumOnSTLImpl::Clone Implementace Klonování.
IEnumOnSTLImpl::Init Inicializuje enumerátor.
IEnumOnSTLImpl::Next Implementace dalšího.
IEnumOnSTLImpl::Reset Implementace resetování.
IEnumOnSTLImpl::Skip Implementace skipu.

Veřejné datové členy

Jméno popis
IEnumOnSTLImpl::m_iter Iterátor, který představuje aktuální pozici enumerátoru v rámci kolekce.
IEnumOnSTLImpl::m_pcollection Ukazatel na kontejner standardní knihovny C++ obsahující položky, které mají být výčty.
IEnumOnSTLImpl::m_spUnk Ukazatel IUnknown objektu, který poskytuje kolekci.

Poznámky

IEnumOnSTLImpl poskytuje implementaci pro rozhraní enumerátoru COM, kde jsou položky výčtu uloženy v kontejneru kompatibilním se standardní knihovnou jazyka C++. Tato třída je analogická k CComEnumImpl třídy, která poskytuje implementaci pro enumerator rozhraní založené na poli.

Poznámka

Podrobnosti o dalších rozdílech mezi CComEnumImpl a IEnumOnSTLImpl.

Obvykle nebudete muset vytvořit vlastní enumerator třídy odvozené z této implementace rozhraní. Pokud chcete použít enumerátor atL zadaný na základě kontejneru standardní knihovny C++, je častější vytvořit instanci CComEnumOnSTL nebo vytvořit třídu kolekce, která vrací enumerátor odvozením z ICollectionOnSTLImpl.

Pokud však potřebujete poskytnout vlastní enumerátor (například ten, který zveřejňuje rozhraní kromě rozhraní enumerátoru), můžete odvodit z této třídy. V této situaci je pravděpodobné, že budete muset přepsat metodu Clone , aby poskytovala vlastní implementaci.

Hierarchie dědičnosti

Base

IEnumOnSTLImpl

Požadavky

Hlavička: atlcom.h

IEnumOnSTLImpl::Init

Inicializuje enumerátor.

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

Parametry

pUnkForRelease
[v] Ukazatel IUnknown objektu, který musí být udržován naživu během životnosti enumerátoru. Pokud takový objekt neexistuje, předejte hodnotu NULL.

Kolekce
Odkaz na kontejner standardní knihovny jazyka C++, který obsahuje položky, které mají být výčty.

Vrácená hodnota

Standardní hodnota HRESULT.

Poznámky

Pokud předáte Init odkaz na kolekci uloženou v jiném objektu, můžete pomocí parametru pUnkForRelease zajistit, aby byl objekt a kolekce, kterou obsahuje, k dispozici, pokud ho enumerátor potřebuje.

Před předáním ukazatele na rozhraní enumerátoru zpět všem klientům musíte tuto metodu volat.

IEnumOnSTLImpl::Clone

Tato metoda poskytuje implementaci Clone metoda vytvořením objektu typu CComEnumOnSTL, inicializace se stejnou kolekcí a iterátorem používaným aktuálním objektem a vrácení rozhraní na nově vytvořeném objektu.

STDMETHOD(Clone)(Base** ppEnum);

Parametry

ppEnum
[ven] Rozhraní enumerátoru na nově vytvořeném objektu klonovaném z aktuálního enumerátoru.

Vrácená hodnota

Standardní hodnota HRESULT.

IEnumOnSTLImpl::m_spUnk

Ukazatel IUnknown objektu, který poskytuje kolekci.

CComPtr<IUnknown> m_spUnk;

Poznámky

Tento inteligentní ukazatel udržuje odkaz na objekt předaný IEnumOnSTLImpl::Init a zajišťuje, že zůstane aktivní během životnosti enumerátoru.

IEnumOnSTLImpl::m_pcollection

Tento člen odkazuje na kolekci, která poskytuje data, která řídí implementaci rozhraní enumerátoru.

CollType* m_pcollection;

Poznámky

Tento člen je inicializován voláním IEnumOnSTLImpl::Init.

IEnumOnSTLImpl::m_iter

Tento člen obsahuje iterátor použitý k označení aktuální pozice v kolekci a přechod na další prvky.

CollType::iterator m_iter;

IEnumOnSTLImpl::Next

Tato metoda poskytuje implementaci další metody.

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

Parametry

celt
[v] Požadovaný počet prvků.

rgelt
[ven] Pole, které má být vyplněno prvky.

pceltFetched
[ven] Počet prvků vrácených v rgeltu. To může být menší než celt , pokud méně než celt prvky zůstanou v seznamu.

Vrácená hodnota

Standardní hodnota HRESULT.

IEnumOnSTLImpl::Reset

Tato metoda poskytuje implementaci metody Reset .

STDMETHOD(Reset)(void);

Vrácená hodnota

Standardní hodnota HRESULT.

IEnumOnSTLImpl::Skip

Tato metoda poskytuje implementaci metody Skip .

STDMETHOD(Skip)(ULONG celt);

Parametry

celt
[v] Počet prvků, které se mají přeskočit.

Vrácená hodnota

Standardní hodnota HRESULT.

Viz také

Přehled třídy