既定のクラス ファクトリと集約モデルの変更

更新 : 2007 年 11 月

ATL は、CComCoClass を使用して、オブジェクトの既定のクラス ファクトリと集約モデルを定義します。CComCoClass は、次の 2 つのマクロを指定します。

クラス定義で別のマクロを指定して、これらの既定のマクロをオーバーライドできます。たとえば、CComClassFactory の代わりに CComClassFactory2 を使用するには、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_THREADDECLARE_CLASSFACTORY_SINGLETON の 2 つのマクロがあります。

ATL では、既定の動作を実装するために typedef 機構も使用します。たとえば、DECLARE_AGGREGATABLE マクロは、typedef を使用して、_CreatorClass という型を定義します。この型は、ATL 全体を通して参照されます。派生クラスの typedef に基本クラスの typedef と同じ名前を使用すると、ATL が派生クラスの定義を使用し、既定の動作がオーバーライドされます。

参照

参照

ATL COM オブジェクトの基本事項

その他の技術情報

集約とクラス ファクトリに関するマクロ