I can see everybody recommending to add delete
to all copy constructor / move / assignment operator, but doing all this I can still assign the instance.
Here is my singleton code :
class SingleTone
{
public:
SingleTone(SingleTone& other) = delete;
SingleTone& operator=(const SingleTone&) = delete;
SingleTone& operator=(SingleTone&&) = delete;
SingleTone* operator=(const SingleTone*) = delete;
static SingleTone* instance()
{
if (singletone == nullptr)
{
singletone = new SingleTone();
}
return singletone;
}
int get1()
{
return 1;
}
private:
SingleTone() {};
static SingleTone* singletone;
};
SingleTone* SingleTone::singletone = nullptr;
But in main, I can still do:
SingleTone *ss = SingleTone::instance();
Now I will have 2 instances.