Класс CComClassFactorySingleton
Этот класс является производным от CComClassFactory и использует CComObjectGlobal для создания одного объекта.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template<class T>
class CComClassFactorySingleton : public CComClassFactory
Параметры
T
Класс.
CComClassFactorySingleton
является производным от CComClassFactory и использует CComObjectGlobal для создания одного объекта. Каждый вызов CreateInstance
метода просто запрашивает этот объект для указателя интерфейса.
Участники
Открытые методы
Имя | Описание |
---|---|
CComClassFactorySingleton::CreateInstance | Запросы m_spObj указателя интерфейса. |
Открытые члены данных
Имя | Описание |
---|---|
CComClassFactorySingleton::m_spObj | Объект CComObjectGlobal, созданный с помощью CComClassFactorySingleton . |
Замечания
Объекты ATL обычно получают фабрику классов, исходя из CComCoClass. Этот класс включает макрос DECLARE_CLASSFACTORY, который объявляется CComClassFactory
как фабрика классов по умолчанию. Чтобы использовать CComClassFactorySingleton
, укажите макрос DECLARE_CLASSFACTORY_SINGLETON в определении класса объекта. Например:
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.
Иерархия наследования
CComObjectRootBase
IClassFactory
CComClassFactorySingleton
Требования
Заголовок: atlcom.h
CComClassFactorySingleton::CreateInstance
Вызовы QueryInterface
через m_spObj для получения указателя интерфейса.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
Параметры
pUnkOuter
[in] Если объект создается в составе агрегата, pUnkOuter должен быть внешним неизвестным. В противном случае pUnkOuter должен иметь значение NULL.
riid
[in] IID запрошенного интерфейса. Если pUnkOuter не имеет значения NULL, необходимо выполнить IID_IUnknown
riid.
ppvObj
[out] Указатель на указатель интерфейса, определяемый идентификатором riid. Если объект не поддерживает этот интерфейс, ppvObj имеет значение NULL.
Возвращаемое значение
Стандартное значение HRESULT.
CComClassFactorySingleton::m_spObj
Объект CComObjectGlobal, созданный с помощью CComClassFactorySingleton
.
CComPtr<IUnknown> m_spObj;
Замечания
Каждый вызов метода CreateInstance просто запрашивает этот объект для указателя интерфейса.
Обратите внимание, что текущая форма m_spObj
представляет критическое изменение от способа работы CComClassFactorySingleton
в предыдущих версиях ATL. В предыдущих версиях CComClassFactorySingleton
объект был создан одновременно с фабрикой классов во время инициализации сервера. В Visual C++.NET 2003 и более поздних версиях объект создается лениво в первом запросе. Это изменение может привести к ошибкам в программах, использующих раннюю инициализацию.
См. также
IClassFactory
Класс CComClassFactory2
Класс CComClassFactoryAutoThread
Класс CComObjectRootEx
CComGlobalsThreadModel
Общие сведения о классе