Partilhar via


CComClassFactorySingleton Class

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe deriva de CComClassFactory e utiliza CComObjectGlobal para construir um único objeto.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parâmetros

T
A tua turma.

CComClassFactorySingleton deriva de CComClassFactory e utiliza CComObjectGlobal para construir um único objeto. Cada chamada ao CreateInstance método simplesmente consulta este objeto para obter um ponteiro de interface.

Membros

Métodos Públicos

Nome Description
CComClassFactorySingleton::CreateInstance Consultas m_spObj para um ponteiro de interface.

Membros de Dados Públicos

Nome Description
CComClassFactorySingleton::m_spObj O objeto CComObjectGlobal construído por CComClassFactorySingleton.

Observações

Os objetos ATL normalmente adquirem uma fábrica de classes derivando do CComCoClass. Esta classe inclui o macro DECLARE_CLASSFACTORY, que declara CComClassFactory como a classe fábrica por defeito. Para usar CComClassFactorySingleton, especifica o macro DECLARE_CLASSFACTORY_SINGLETON na definição da classe do teu 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

Requerimentos

Cabeçalho: atlcom.h

CComClassFactorySingleton::CreateInstance

Faz chamadas QueryInterface através de m_spObj para recuperar um ponteiro de interface.

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

Parâmetros

PUnkOuter
[dentro] Se o objeto está a ser criado como parte de um agregado, então o pUnkOuter deve ser o desconhecido exterior. Caso contrário, pUnkOuter tem de ser NULL.

riid
[dentro] O IID da interface solicitada. Se pUnkOuter for non-NULL, riid deve ser IID_IUnknown.

ppvObj
[fora] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não suportar esta interface, ppvObj é 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;

Observações

Cada chamada ao método CreateInstance simplesmente consulta este objeto para obter um ponteiro de interface.

Note que a forma atual de m_spObj apresenta uma mudança significativa em relação à forma como CComClassFactorySingleton funcionava nas versões anteriores do ATL. Em versões anteriores, o CComClassFactorySingleton objeto era 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 preguiçosamente, no primeiro pedido. Esta alteração pode causar erros em programas que dependem de inicialização antecipada.

Consulte também

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