Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
IClassFactory
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