Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
IClassFactory
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