共用方式為


CComClassFactorySingleton 類別

這個類別衍生自 CComClassFactory ,並使用 CComObjectGlobal 建構單一物件。

重要

這個類別及其成員不能用於在Windows 執行階段中執行的應用程式。

語法

template<class T>
class CComClassFactorySingleton : public CComClassFactory

參數

T
您的類別。

CComClassFactorySingleton 衍生自 CComClassFactory ,並使用 CComObjectGlobal 建構單一物件。 每次呼叫 CreateInstance 方法時,只要查詢這個物件是否有介面指標。

成員

公用方法

名稱 描述
CComClassFactorySingleton::CreateInstance 介面指標的查詢 m_spObj

公用資料成員

名稱 描述
CComClassFactorySingleton::m_spObj CComClassFactorySingleton 建構的 CComObjectGlobal 物件。

備註

ATL 物件通常藉由衍生自 CComCoClass 來取得類別處理站。 這個類別包含宏 DECLARE_CLASSFACTORY ,它會宣告 CComClassFactory 為預設類別處理站。 若要使用 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。

傳回值

標準 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
類別概觀