Compartir a través de


Clase CComClassFactorySingleton

Esta clase deriva de CComClassFactory y usa CComObjectGlobal para construir un solo objeto.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parámetros

T
Su clase.

CComClassFactorySingleton deriva de CComClassFactory y usa CComObjectGlobal para construir un solo objeto. Cada llamada al método CreateInstance simplemente consulta este objeto para un puntero de interfaz.

Miembros

Métodos públicos

Nombre Descripción
CComClassFactorySingleton::CreateInstance Consulta a m_spObj para un puntero de interfaz.

Miembros de datos públicos

Nombre Descripción
CComClassFactorySingleton::m_spObj Objeto CComObjectGlobal construido por CComClassFactorySingleton.

Comentarios

Normalmente, los objetos ATL adquieren un generador de clases al derivar de CComCoClass. Esta clase incluye la macro DECLARE_CLASSFACTORY, que declara que CComClassFactory es el generador de clases predeterminado. Para usar CComClassFactorySingleton, especifique la macro DECLARE_CLASSFACTORY_SINGLETON en la definición de clase del objeto. Por ejemplo:

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.

Jerarquía de herencia

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Requisitos

Encabezado: atlcom.h

CComClassFactorySingleton::CreateInstance

Llama a QueryInterface mediante m_spObj para recuperar un puntero de interfaz.

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

Parámetros

pUnkOuter
[in] Si el objeto se crea como parte de un agregado, pUnkOuter debe ser el desconocido externo. De lo contrario, pUnkOuter debe ser null.

riid
[in] El IID de la interfaz solicitada. Si pUnkOuter no es null, riid debe ser IID_IUnknown.

ppvObj
[out] Puntero al puntero de interfaz identificado por riid. Si el objeto no admite esta interfaz, ppvObj se establece en NULL.

Valor devuelto

Valor HRESULT estándar.

CComClassFactorySingleton::m_spObj

Objeto CComObjectGlobal construido por CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Comentarios

Cada llamada al método CreateInstance simplemente consulta este objeto para un puntero de interfaz.

Tenga en cuenta que la forma actual de m_spObj presenta un cambio importante en la forma en que CComClassFactorySingleton funcionaba en versiones anteriores de ATL. En versiones anteriores, el objeto CComClassFactorySingleton se creó al mismo tiempo que el generador de clases, durante la inicialización del servidor. En Visual C++.NET 2003 y versiones posteriores, el objeto se crea en diferido, en la primera solicitud. Este cambio podría provocar errores en los programas que dependen de la inicialización temprana.

Consulte también

IClassFactory
CComClassFactory2 (clase)
CComClassFactoryAutoThread (clase)
CComObjectRootEx (clase)
CComGlobalsThreadModel
Información general sobre la clase