Partage via


CComClassFactorySingleton, classe

Cette classe dérive de CComClassFactory et utilise CComObjectGlobal pour construire un seul objet.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Paramètres

T
Votre classe.

CComClassFactorySingleton dérive de CComClassFactory et utilise CComObjectGlobal pour construire un seul objet. Chaque appel à la CreateInstance méthode interroge simplement cet objet pour un pointeur d’interface.

Membres

Méthodes publiques

Nom Description
CComClassFactorySingleton ::CreateInstance Requêtes m_spObj pour un pointeur d’interface.

Membres de données publics

Nom Description
CComClassFactorySingleton ::m_spObj Objet CComObjectGlobal construit par CComClassFactorySingleton.

Notes

Les objets ATL acquièrent normalement une fabrique de classes en dérivant de CComCoClass. Cette classe inclut la macro DECLARE_CLASSFACTORY, qui déclare CComClassFactory comme fabrique de classes par défaut. Pour utiliser CComClassFactorySingleton, spécifiez la macro DECLARE_CLASSFACTORY_SINGLETON dans la définition de classe de votre objet. Par exemple :

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.

Hiérarchie d'héritage

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Spécifications

En-tête : atlcom.h

CComClassFactorySingleton ::CreateInstance

Appelle QueryInterface m_spObj pour récupérer un pointeur d’interface.

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

Paramètres

pUnkOuter
[in] Si l’objet est créé dans le cadre d’un agrégat, pUnkOuter doit être l’inconnu externe. Sinon, pUnkOuter doit être NULL.

riid
[in] IID de l’interface demandée. Si pUnkOuter n’est pas NULL, riid doit être IID_IUnknown.

ppvObj
[out] Pointeur vers le pointeur d’interface identifié par riid. Si l’objet ne prend pas en charge cette interface, ppvObj a la valeur NULL.

Valeur de retour

Valeur HRESULT standard.

CComClassFactorySingleton ::m_spObj

Objet CComObjectGlobal construit par CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Notes

Chaque appel à la méthode CreateInstance interroge simplement cet objet pour un pointeur d’interface.

Notez que la forme actuelle présente m_spObj un changement cassant de la façon dont les CComClassFactorySingleton versions précédentes d’ATL ont fonctionné. Dans les versions précédentes, l’objet CComClassFactorySingleton a été créé en même temps que la fabrique de classes, lors de l’initialisation du serveur. Dans Visual C++.NET 2003 et versions ultérieures, l’objet est créé de manière différée, lors de la première requête. Cette modification peut entraîner des erreurs dans les programmes qui s’appuient sur l’initialisation anticipée.

Voir aussi

IClassFactory
CComClassFactory2, classe
CComClassFactoryAutoThread, classe
CComObjectRootEx, classe
CComGlobalsThreadModel
Vue d’ensemble de la classe