#include <iostream>
using namespace std;
class singleton_p
{
static singleton_p *instance;
singleton_p() {};
//copy constructor
singleton_p(const singleton_p & b);
singleton_p& operator= (const singleton_p & A);
public:
static singleton_p & create_instance()
{
if(!instance)
{
instance=new singleton_p();
}
return *instance;
}
void display()
{
std::cout<<"singleton class display func called\n";
cout<<(this)<<endl;
cout<<"---------------------------------"<<endl;
}
};
singleton_p* singleton_p::instance = NULL;
int _tmain(int argc, _TCHAR* argv[])
{
singleton_p p1=singleton_p::create_instance();
p1.display();
// creating instance
singleton_p p2=singleton_p::create_instance();
p2.display();
return 0;
}
I have also made copy constructor and assignment operator private to avoid creating new instance using them. I am defining here singleton class. But it's giving me error in
singleton_p p1=singleton_p::create_instance();
singleton_p p2=singleton_p::create_instance();
- error C2248: 'singleton_p::singleton_p' : cannot access private member declared in class 'singleton_p' 1>
- projects\singleton_class\singleton_class\singleton_class.cpp(15) : see declaration of 'singleton_p::singleton_p' 1>
- projects\singleton_class\singleton_class\singleton_class.cpp(9) : see declaration of 'singleton_p'
Please help me where I am doing wrong. Thanks