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 CComEnumOnSTL
erstellt 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.