1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| class GlobalClass
{
int m_value;
static GlobalClass *s_instance;
GlobalClass(int v = 0)
{
m_value = v;
cout<<" construct singleton"<<endl;
}
~GlobalClass(){}
public:
int get_value()
{
return m_value;
}
void set_value(int v)
{
m_value = v;
}
static GlobalClass *instance()
{
if (!s_instance)
s_instance = new GlobalClass;
return s_instance;
}
};
// Allocating and initializing GlobalClass's
// static data member. The pointer is being
// allocated - not the object inself.
GlobalClass *GlobalClass::s_instance = NULL;
int main()
{
GlobalClass *p1=GlobalClass::instance();
GlobalClass sing=*p1; // le problème est là
GlobalClass *p2=p1->instance();
GlobalClass &ref=*p1;
p1->set_value(3);
return 0;
} |