次の方法で共有


CComClassFactorySingleton クラス

このクラスは、CComClassFactory から派生し、CComObjectGlobal を使用して 1 つのオブジェクトを構築します。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

template<class T>
class CComClassFactorySingleton : public CComClassFactory

パラメーター

T
クラス。

CComClassFactorySingleton は、CComClassFactory から派生し、CComObjectGlobal を使用して 1 つのオブジェクトを構築します。 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
[入力] 要求された インターフェイスの IID。 pUnkOuter が NULL 以外の場合、riidIID_IUnknown である必要があります。

ppvObj
[出力] riid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトがこのインターフェイスをサポートしていない場合、ppvObj は NULL に設定されます。

戻り値

標準の 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
クラスの概要