Freigeben über


IEnumOnSTLImpl-Klasse

Diese Klasse definiert eine Enumeratorschnittstelle basierend auf einer C++-Standardbibliothekssammlung.

Syntax

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

Parameter

Bemessungsgrundlage
Ein COM-Enumerator. Ein Beispiel finden Sie unter "IEnumString ".

piid
Ein Zeiger auf die Schnittstellen-ID der Enumeratorschnittstelle.

T
Der Typ des Elements, der von der Enumerationsschnittstelle verfügbar gemacht wird.

Kopieren
Eine Kopierrichtlinienklasse.

CollType
Eine C++-Standardbibliothek-Containerklasse.

Member

Öffentliche Methoden

Name Beschreibung
IEnumOnSTLImpl::Clone Die Implementierung von Clone.
IEnumOnSTLImpl::Init Initialisiert den Enumerator.
IEnumOnSTLImpl::Next Die Implementierung von Next.
IEnumOnSTLImpl::Reset Die Implementierung von Reset.
IEnumOnSTLImpl::Skip Die Implementierung von Skip.

Öffentliche Datenmember

Name Beschreibung
IEnumOnSTLImpl::m_iter Der Iterator, der die aktuelle Position des Enumerators innerhalb der Auflistung darstellt.
IEnumOnSTLImpl::m_pcollection Ein Zeiger auf den C++-Standardbibliothekscontainer, in dem die Elemente aufgelistet werden sollen.
IEnumOnSTLImpl::m_spUnk Der IUnknown Zeiger des Objekts, das die Auflistung angibt.

Hinweise

IEnumOnSTLImpl stellt die Implementierung für eine COM-Enumerationsschnittstelle bereit, bei der die aufgezählten Elemente in einem C++-Standardbibliotheks-kompatiblen Container gespeichert werden. Diese Klasse entspricht der CComEnumImpl-Klasse , die eine Implementierung für eine Enumeratorschnittstelle basierend auf einem Array bereitstellt.

Hinweis

Weitere Informationen zu weiteren Unterschieden zwischen CComEnumImpl und IEnumOnSTLImpl.

In der Regel müssen Sie keine eigene Enumerationsklasse erstellen, indem Sie von dieser Schnittstellenimplementierung abgeleitet werden. Wenn Sie einen ATL-bereitgestellten Enumerator verwenden möchten, der auf einem C++-Standardbibliothekscontainer basiert, ist es üblicher, eine Instanz von CComEnumOnSTL zu erstellen oder eine Auflistungsklasse zu erstellen, die einen Enumerator zurückgibt, indem sie von ICollectionOnSTLImpl abgeleitet wird.

Wenn Sie jedoch einen benutzerdefinierten Enumerator bereitstellen müssen (z. B. eine, die Schnittstellen zusätzlich zur Enumeratorschnittstelle verfügbar macht), können Sie von dieser Klasse abgeleitet werden. In dieser Situation ist es wahrscheinlich, dass Sie die Clone-Methode außer Kraft setzen müssen, um Ihre eigene Implementierung bereitzustellen.

Vererbungshierarchie

Base

IEnumOnSTLImpl

Anforderungen

Kopfzeile: atlcom.h

IEnumOnSTLImpl::Init

Initialisiert den Enumerator.

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

Parameter

pUnkForRelease
[in] Der IUnknown Zeiger eines Objekts, das während der Lebensdauer des Enumerators lebendig gehalten werden muss. Übergeben Sie NULL, wenn kein solches Objekt vorhanden ist.

collection
Ein Verweis auf den C++-Standardbibliothekscontainer, der die elemente enthält, die aufgezählt werden sollen.

Rückgabewert

Ein HRESULT-Standardwert.

Hinweise

Wenn Sie einen Verweis auf eine Auflistung übergeben Init , die in einem anderen Objekt enthalten ist, können Sie den Parameter "pUnkForRelease " verwenden, um sicherzustellen, dass das Objekt und die darin enthaltene Auflistung so lange verfügbar sind, wie der Enumerator sie benötigt.

Sie müssen diese Methode aufrufen, bevor Sie einen Zeiger an die Enumeratorschnittstelle an alle Clients übergeben.

IEnumOnSTLImpl::Clone

Diese Methode stellt die Implementierung der Clone-Methode bereit, indem ein Objekt vom Typ CComEnumOnSTLerstellt wird, das mit derselben Auflistung initialisiert und von dem aktuellen Objekt verwendet wird, und die Schnittstelle für das neu erstellte Objekt zurückgegeben wird.

STDMETHOD(Clone)(Base** ppEnum);

Parameter

ppEnum
[out] Die Enumerationsschnittstelle für ein neu erstelltes Objekt, das vom aktuellen Enumerator geklont wurde.

Rückgabewert

Ein HRESULT-Standardwert.

IEnumOnSTLImpl::m_spUnk

Der IUnknown Zeiger des Objekts, das die Auflistung angibt.

CComPtr<IUnknown> m_spUnk;

Hinweise

Dieser intelligente Zeiger verwaltet einen Verweis auf das Objekt, das an IEnumOnSTLImpl::Init übergeben wird, und stellt sicher, dass es während der Lebensdauer des Enumerators lebendig bleibt.

IEnumOnSTLImpl::m_pcollection

Dieses Element verweist auf die Auflistung, die die Daten bereitstellt, die die Implementierung der Enumerationsschnittstelle steuern.

CollType* m_pcollection;

Hinweise

Dieses Element wird durch einen Aufruf von IEnumOnSTLImpl::Init initialisiert.

IEnumOnSTLImpl::m_iter

Dieses Element enthält den Iterator, der verwendet wird, um die aktuelle Position innerhalb der Auflistung zu markieren und zu nachfolgenden Elementen zu navigieren.

CollType::iterator m_iter;

IEnumOnSTLImpl::Next

Diese Methode stellt die Implementierung der Next-Methode bereit.

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

Parameter

celt
[in] Die Anzahl der angeforderten Elemente.

rgelt
[out] Das Array, das mit den Elementen gefüllt werden soll.

pceltFetched
[out] Die Anzahl der Elemente, die tatsächlich in rgelt zurückgegeben wurden. Dies kann kleiner als kelt sein, wenn weniger als Keltenelemente in der Liste verbleiben.

Rückgabewert

Ein HRESULT-Standardwert.

IEnumOnSTLImpl::Reset

Diese Methode stellt die Implementierung der Reset-Methode bereit.

STDMETHOD(Reset)(void);

Rückgabewert

Ein HRESULT-Standardwert.

IEnumOnSTLImpl::Skip

Diese Methode stellt die Implementierung der Skip-Methode bereit.

STDMETHOD(Skip)(ULONG celt);

Parameter

celt
[in]: Die Anzahl der zu überspringenden Elemente.

Rückgabewert

Ein HRESULT-Standardwert.

Siehe auch

Klassenübersicht