CComClassFactorySingleton 클래스
이 클래스는 CComClassFactory에서 파생되며 CComObjectGlobal을 사용하여 단일 개체를 생성합니다.
Important
이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.
구문
template<class T>
class CComClassFactorySingleton : public CComClassFactory
매개 변수
T
클래스입니다.
CComClassFactorySingleton
는 CComClassFactory에서 파생되고 CComObjectGlobal을 사용하여 단일 개체를 생성합니다. 메서드에 대한 각 호출은 CreateInstance
인터페이스 포인터에 대해 이 개체를 쿼리하기만 하면 됩니다.
멤버
공용 메서드
이름 | 설명 |
---|---|
CComClassFactorySingleton::CreateInstance | m_spObj 인터페이스 포인터에 대한 쿼리입니다. |
공용 데이터 멤버
속성 | 설명 |
---|---|
CComClassFactorySingleton::m_spObj | CComClassFactorySingleton 에 의해 생성된 CComObjectGlobal 개체입니다. |
설명
ATL 개체는 일반적으로 CComCoClass에서 파생하여 클래스 팩터리를 획득합니다. 이 클래스에는 CComClassFactory
를 기본 클래스 팩터리로 선언하는 매크로 DECLARE_CLASSFACTORY 포함되어 있습니다. 사용 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
M_spObj를 통해 QueryInterface
를 호출하여 인터페이스 포인터를 검색합니다.
STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);
매개 변수
pUnkOuter
[in] 개체가 집계 의 일부로 만들어지는 경우 pUnkOuter 는 알 수 없는 외부여야 합니다. 그렇지 않으면 pUnkOuter는 NULL이어야 합니다.
riid
[in] 요청된 인터페이스의 IID입니다. pUnkOuter가 NULL이 아닌 경우 riid는 .이어야 IID_IUnknown
합니다.
ppvObj
[out] riid로 식별되는 인터페이스 포인터에 대한 포인터입니다. 개체가 이 인터페이스 를 지원하지 않으면 ppvObj 가 NULL로 설정됩니다.
Return Value
표준 HRESULT 값입니다.
CComClassFactorySingleton::m_spObj
CComClassFactorySingleton
에 의해 생성된 CComObjectGlobal 개체입니다.
CComPtr<IUnknown> m_spObj;
설명
CreateInstance 메서드에 대한 각 호출은 인터페이스 포인터에 대해 이 개체를 쿼리하기만 하면 됩니다.
현재 형식 m_spObj
은 이전 버전의 ATL에서 작동했던 방식과 호환성이 손상되는 CComClassFactorySingleton
변경을 표시합니다. 이전 버전 CComClassFactorySingleton
에서는 서버 초기화 중에 클래스 팩터리와 동시에 개체를 만들었습니다. Visual C++.NET 2003 이상에서는 개체가 첫 번째 요청에 따라 지연적으로 만들어집니다. 이 변경으로 인해 초기화에 의존하는 프로그램에서 오류가 발생할 수 있습니다.
참고 항목
IClassFactory
CComClassFactory2 클래스
CComClassFactoryAutoThread 클래스
CComObjectRootEx 클래스
CComGlobalsThreadModel
클래스 개요