devxlogo

How to Ensure that Only One Object of a Class Exists in Your App

How to Ensure that Only One Object of a Class Exists in Your App

Sometimes you want to make sure that you will have only one object of a specific class in your application. There is a simple technique for doing this. This example code uses the class Foo:

 class Foo{public:	static Foo* GetInstance()	{		static BOOL bInit = FALSE;		if (bInit == FALSE)		{			bInit = TRUE;			m_pInstance = new Foo();		}		return m_pInstance;	}private:	Foo() {}	static Foo *m_pInstance;};Foo* Foo::m_pInstance = NULL;

Now the only way you can create an object of type Foo is by calling to the static method GetInstance(). For example:

 Foo foo(); // compilation failure - constructor is privateFoo* pFoo1 = Foo::GetInstance(); // the right way to get pointer to Foo objectFoo* pFoo2 = Foo::GetInstance(); // get pointer to the same object as pFoo1 and doesn't create new object

devx-admin

Share the Post: