Bagikan melalui


Kelas CComClassFactorySingleton

Kelas ini berasal dari CComClassFactory dan menggunakan CComObjectGlobal untuk membangun satu objek.

Penting

Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Sintaks

template<class T>
class CComClassFactorySingleton : public CComClassFactory

Parameter

T
Kelas Anda.

CComClassFactorySingleton berasal dari CComClassFactory dan menggunakan CComObjectGlobal untuk membangun satu objek. Setiap panggilan ke CreateInstance metode hanya mengkueri objek ini untuk penunjuk antarmuka.

Anggota

Metode Publik

Nama Deskripsi
CComClassFactorySingleton::CreateInstance Kueri m_spObj untuk penunjuk antarmuka.

Anggota Data Publik

Nama Deskripsi
CComClassFactorySingleton::m_spObj Objek CComObjectGlobal yang dibangun oleh CComClassFactorySingleton.

Keterangan

Objek ATL biasanya memperoleh pabrik kelas dengan berasal dari CComCoClass. Kelas ini mencakup DECLARE_CLASSFACTORY makro, yang menyatakan CComClassFactory sebagai pabrik kelas default. Untuk menggunakan CComClassFactorySingleton, tentukan makro DECLARE_CLASSFACTORY_SINGLETON dalam definisi kelas objek Anda. Contohnya:

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.

Hierarki Warisan

CComObjectRootBase

CComObjectRootEx

IClassFactory

CComClassFactory

CComClassFactorySingleton

Persyaratan

Header: atlcom.h

CComClassFactorySingleton::CreateInstance

QueryInterface Memanggil melalui m_spObj untuk mengambil penunjuk antarmuka.

STDMETHOD(CreateInstance)(LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj);

Parameter

pUnkOuter
[di] Jika objek sedang dibuat sebagai bagian dari agregat, maka pUnkOuter harus menjadi bagian luar yang tidak diketahui. Jika tidak, pUnkOuter harus NULL.

riid
[masuk] IID antarmuka yang diminta . Jika pUnkOuter non-NULL, riid harus IID_IUnknown.

ppvObj
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh riid. Jika objek tidak mendukung antarmuka ini, ppvObj diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

CComClassFactorySingleton::m_spObj

Objek CComObjectGlobal yang dibangun oleh CComClassFactorySingleton.

CComPtr<IUnknown> m_spObj;

Keterangan

Setiap panggilan ke metode CreateInstance hanya mengkueri objek ini untuk penunjuk antarmuka.

Perhatikan bahwa bentuk m_spObj saat ini menyajikan perubahan yang melanggar dari cara kerja CComClassFactorySingleton di versi ATL sebelumnya. Dalam versi sebelumnya objek dibuat pada saat yang sama dengan pabrik kelas, selama inisialisasi CComClassFactorySingleton server. Di Visual C++.NET 2003 dan yang lebih baru, objek dibuat dengan malas, pada permintaan pertama. Perubahan ini dapat menyebabkan kesalahan dalam program yang mengandalkan inisialisasi awal.

Lihat juga

IClassFactory
Kelas CComClassFactory2
Kelas CComClassFactoryAutoThread
Kelas CComObjectRootEx
CComGlobalsThreadModel
Gambaran Umum Kelas