다음을 통해 공유


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

CComObjectRootEx

IClassFactory

CComClassFactory

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
클래스 개요