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
IClassFactory
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