Classe CComClassFactorySing ltda

Essa classe deriva de CComClassFactory e usa CComObjectGlobal para construir um único objeto.

Importante

Essa classe e seus membros não podem ser usados em aplicativos que são executados no Windows Runtime.

Sintaxe

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parâmetros

T
Sua classe.

CComClassFactorySingleton deriva de CComClassFactory e usa CComObjectGlobal para construir um único objeto. Cada chamada para o método CreateInstance simplesmente consulta esse objeto para um ponteiro de interface.

Membros

Métodos públicos

Nome Descrição
CComClassFactorySing ltd::CreateInstance Consultas para m_spObj um ponteiro de interface.

Membros de Dados Públicos

Nome Descrição
CComClassFactorySing ltd::m_spObj O objeto CComObjectGlobal construído por CComClassFactorySingleton.

Comentários

Os objetos ATL normalmente adquirem uma fábrica de classes derivando de CComCoClass. Essa classe inclui a macro DECLARE_CLASSFACTORY, que declara como CComClassFactory a fábrica de classes padrão. Para usar CComClassFactorySingleton, especifique a DECLARE_CLASSFACTORY_SINGLETON na definição de classe do objeto. Por exemplo:

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.

Hierarquia de herança

CComObjectRootBase

Ccomobjectrootex

IClassFactory

Ccomclassfactory

CComClassFactorySingleton

Requisitos

Header: atlcom.h

CComClassFactorySing ltd::CreateInstance

Chama QueryInterface por m_spObj para recuperar um ponteiro de interface.

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

Parâmetros

Punkouter
[in] Se o objeto estiver sendo criado como parte de uma agregação, pUnkOuter deverá ser o desconhecido externo. Caso contrário, pUnkOuter deve ser NULL.

riid
[in] O IID da interface solicitada. Se pUnkOuter for não NULL, riid deverá ser IID_IUnknown.

Ppvobj
[out] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não dá suporte a essa interface, ppvObj é definido como NULL.

Valor Retornado

Um valor HRESULT padrão.

CComClassFactorySing ltd::m_spObj

O objeto CComObjectGlobal construído por CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Comentários

Cada chamada para o método CreateInstance simplesmente consulta esse objeto para um ponteiro de interface.

Observe que a forma atual de m_spObj apresenta uma alteração da quebra da maneira como funcionava nas CComClassFactorySingleton versões anteriores da ATL. Nas versões anteriores, o CComClassFactorySingleton objeto foi criado ao mesmo tempo que a fábrica de classes, durante a inicialização do servidor. No Visual C++.NET 2003 e posteriores, o objeto é criado de forma esporádicamente, na primeira solicitação. Essa alteração pode causar erros em programas que dependem da inicialização antecipada.

Confira também

IClassFactory
Classe CComClassFactory2
Classe CComClassFactoryAutoThread
Classe CComObjectRootEx
Ccomglobalsthreadmodel
Visão geral da classe