Это не одиночный класс. Класс Singleton подразумевает, что в любой момент времени вы не можете иметь более 1 экземпляра класса. В вашем примере вы не только создаете новый экземпляр, но даже возвращаете новые объекты класса в его методы.
Делайте конструктор по умолчанию защищенным (копируйте или перемещайте конструкторы, если вы действительно хотите быть уверены, что он как синглтон) ). Затем используйте свои данные c 'nill', как показано ниже:
class Something {
protected:
Something() = default;
...
int main() {
Something::nill->Nill();
...
Ps. Вы уверены, что вам нужен синглтон? Ваши методы говорят обратное.