다음을 통해 공유


기본 클래스 팩터리 및 집계 모델 변경

ATL은 CComCoClass를 사용하여 개체에 대한 기본 클래스 팩터리 및 집계 모델을 정의합니다. CComCoClass 는 다음 두 개의 매크로를 지정합니다.

  • DECLARE_CLASSFACTORY 클래스 팩터리를 CComClassFactory선언합니다.

  • DECLARE_AGGREGATABLE 개체를 집계할 수 있음을 선언합니다.

클래스 정의에 다른 매크로를 지정하여 이러한 기본값 중 하나를 재정의할 수 있습니다. 예를 들어 CComClassFactory2 대신 CComClassFactory사용하려면 DECLARE_CLASSFACTORY2 매크로를 지정합니다.

class ATL_NO_VTABLE CMyClass2 :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyClass2, &CLSID_MyClass>,
   public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
   public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
   DECLARE_CLASSFACTORY2(CMyLicense)

   // Remainder of class declaration omitted

클래스 팩터리를 정의하는 다른 두 매크로는 DECLARE_CLASSFACTORY_AUTO_THREAD DECLARE_CLASSFACTORY_SINGLETON.

또한 ATL은 메커니즘을 typedef 사용하여 기본 동작을 구현합니다. 예를 들어 DECLARE_AGGREGATABLE 매크로는 호출_CreatorClass된 형식을 정의하는 데 사용합니다typedef. 이 형식은 ATL 전체에서 참조됩니다. 파생 클래스에서 기본 클래스 typedef 와 동일한 이름을 사용하는 경우 ATL에서 정의를 사용하고 기본 동작을 재정의 typedef 합니다.

참고 항목

ATL COM 개체 기본 사항
집계 및 클래스 팩터리 매크로