Share via


Klasse CComClassFactorySingleton

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse is afgeleid van CComClassFactory en maakt gebruik van CComObjectGlobal om één object te maken.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parameterwaarden

T
Je klas.

CComClassFactorySingleton is afgeleid van CComClassFactory en gebruikt CComObjectGlobal om één object te maken. Elke aanroep van de CreateInstance methode voert gewoon een query uit op dit object voor een interfaceaanwijzer.

Leden

Openbare methoden

Naam Description
CComClassFactorySingleton::CreateInstance Query's m_spObj voor een interfaceaanwijzer.

Publieke dataleden

Naam Description
CComClassFactorySingleton::m_spObj Het CComObjectGlobal-object gemaakt door CComClassFactorySingleton.

Opmerkingen

ATL-objecten verwerven normaal gesproken een klassefactory door afgeleid van CComCoClass. Deze klasse bevat de macro-DECLARE_CLASSFACTORY, die declareert CComClassFactory als de standaardklassefactory. Als u wilt gebruiken CComClassFactorySingleton, geeft u de DECLARE_CLASSFACTORY_SINGLETON macro op in de klassedefinitie van uw object. Voorbeeld:

class ATL_NO_VTABLE CMySingletonClass :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMySingletonClass, &CLSID_MySingletonClass>,
   public IMySingletonClass
{
public:
   DECLARE_CLASSFACTORY_SINGLETON(CMySingletonClass)

   // Remainder of class declaration omitted.

Overnamehiërarchie

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Requirements

Koptekst: atlcom.h

CComClassFactorySingleton::CreateInstance

Roept QueryInterfacem_spObj aan om een interfaceaanwijzer op te halen.

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

Parameterwaarden

pUnkOuter
[in] Als het object wordt gemaakt als onderdeel van een statistische functie, moet pUnkOuter het buitenste onbekende object zijn. Anders moet pUnkOuter NULL zijn.

riid
[in] De IID van de aangevraagde interface. Als pUnkOuter niet null is, moet riid zijn IID_IUnknown.

ppvObj
[uit] Een aanwijzer naar de interfacepointer die wordt geïdentificeerd door riid. Als het object deze interface niet ondersteunt, is ppvObj ingesteld op NULL.

Retourwaarde

Een standaard HRESULT-waarde.

CComClassFactorySingleton::m_spObj

Het CComObjectGlobal-object gemaakt door CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Opmerkingen

Elke aanroep van de Methode CreateInstance voert eenvoudig een query uit op dit object voor een interfaceaanwijzer.

Houd er rekening mee dat de huidige vorm van m_spObj een wijziging die fouten vertoont ten opzichte van de manier waarop CComClassFactorySingleton in eerdere versies van ATL werkte. In eerdere versies is het CComClassFactorySingleton object gemaakt op hetzelfde moment als de klassefactory, tijdens de serverinitialisatie. In Visual C++.NET 2003 en hoger wordt het object lazily gemaakt op de eerste aanvraag. Deze wijziging kan fouten veroorzaken in programma's die afhankelijk zijn van vroege initialisatie.

Zie ook

IClassFactory
CComClassFactory2-klasse
CComClassFactoryAutoThread-klasse
CComObjectRootEx-klasse
CComGlobalsThreadModel
Overzicht van klassen