Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс является производным от 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.
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
Общие сведения о классе