Compartilhar via


CComClassFactorySingleton Class

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

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos 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 consulta esse objeto para obter um ponteiro de interface.

Membros

Métodos públicos

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

Membros de Dados Públicos

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

Comentários

Objetos ATL normalmente adquirem uma fábrica de classes derivando de CComCoClass. Essa classe inclui a macro DECLARE_CLASSFACTORY, que declara CComClassFactory como a fábrica de classes padrão. Para usar CComClassFactorySingleton, especifique a macro DECLARE_CLASSFACTORY_SINGLETON na definição de classe do seu 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

Cabeçalho: atlcom.h

CComClassFactorySingleton::CreateInstance

Chama QueryInterface por meio de m_spObj para recuperar um ponteiro de interface.

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

Parâmetros

pUnkOuter
[entrada] 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 não for NULL, riid deverá ser IID_IUnknown.

ppvObj
[saída] Um ponteiro para o ponteiro da interface identificado por riid. Se o objeto não der suporte a essa interface, o ppvObj será definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

CComClassFactorySingleton::m_spObj

O objeto CComObjectGlobal construído por CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Comentários

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

Observe que a forma atual de m_spObj apresenta uma alteração interruptiva da maneira como CComClassFactorySingleton funcionava em versões anteriores da ATL. Nas versões anteriores, o objeto CComClassFactorySingleton foi criado ao mesmo tempo que a fábrica de classes, durante a inicialização do servidor. No Visual C++.NET 2003 e posterior, o objeto é criado de forma lenta, 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 aula