Udostępnij za pośrednictwem


Klasa CComClassFactorySingleton

Ta klasa pochodzi z klasy CComClassFactory i używa obiektu CComObjectGlobal do konstruowania pojedynczego obiektu.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parametry

T
Klasa.

CComClassFactorySingleton element pochodzi z klasy CComClassFactory i używa obiektu CComObjectGlobal do konstruowania pojedynczego obiektu. Każde wywołanie CreateInstance metody po prostu odpytuje ten obiekt dla wskaźnika interfejsu.

Elementy członkowskie

Metody publiczne

Nazwa/nazwisko opis
CComClassFactorySingleton::CreateInstance Zapytania m_spObj dotyczące wskaźnika interfejsu.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CComClassFactorySingleton::m_spObj Obiekt CComObjectGlobal skonstruowany przez CComClassFactorySingletonelement .

Uwagi

Obiekty ATL zwykle uzyskują fabrykę klas, wyprowadzając je z klasy CComCoClass. Ta klasa zawiera DECLARE_CLASSFACTORY makra, które deklaruje CComClassFactory jako domyślną fabrykę klas. Aby użyć CComClassFactorySingletonmetody , określ makro DECLARE_CLASSFACTORY_SINGLETON w definicji klasy obiektu. Na przykład:

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.

Hierarchia dziedziczenia

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Wymagania

Nagłówek: atlcom.h

CComClassFactorySingleton::CreateInstance

Wywołuje QueryInterface m_spObj w celu pobrania wskaźnika interfejsu.

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

Parametry

pUnkOuter
[in] Jeśli obiekt jest tworzony w ramach agregacji, element pUnkOuter musi być zewnętrznym nieznanym obiektem. W przeciwnym razie pUnkOuter musi mieć wartość NULL.

riid
[in] Identyfikator IID żądanego interfejsu. Jeśli parametr pUnkOuter ma wartość inną niż NULL, riid musi mieć wartość IID_IUnknown.

ppvObj
[out] Wskaźnik do wskaźnika interfejsu zidentyfikowany przez riid. Jeśli obiekt nie obsługuje tego interfejsu, parametr ppvObj ma wartość NULL.

Wartość zwracana

Standardowa wartość HRESULT.

CComClassFactorySingleton::m_spObj

Obiekt CComObjectGlobal skonstruowany przez CComClassFactorySingletonelement .

CComPtr<IUnknown> m_spObj;

Uwagi

Każde wywołanie metody CreateInstance po prostu wysyła zapytanie do tego obiektu dla wskaźnika interfejsu.

Należy zauważyć, że bieżąca forma m_spObj przedstawia zmianę powodującą niezgodność ze sposobem CComClassFactorySingleton działania w poprzednich wersjach atl. W poprzednich wersjach CComClassFactorySingleton obiekt został utworzony w tym samym czasie co fabryka klas podczas inicjowania serwera. W programie Visual C++.NET 2003 lub nowszym obiekt jest tworzony z opóźnieniem w pierwszym żądaniu. Ta zmiana może spowodować błędy w programach, które opierają się na wczesnej inicjalizacji.

Zobacz też

IClassFactory
Klasa CComClassFactory2
Klasa CComClassFactoryAutoThread
Klasa CComObjectRootEx
CComGlobalsThreadModel
Omówienie klasy