2015-08-26 2 views
0

Есть ли способ сделать класс singleton без личного конструктора?
Каковы преимущества и недостатки этого?Как создать класс singleton без использования частного конструктора?

+0

Ваш вопрос просто вне интереса? В чем причина отсутствия частного конструктора? –

+0

Симон - это только для меня. – ajay

+0

С конструктором 'protected' ... – Jarod42

ответ

0

В C++ 11 вы можете удалить свой конструктор, вместо того чтобы сделать его приватным.

struct Widget{ 
    Widget()=delete; 
}; 

Преимущества удаленного конструктора:
Преимущество указания удаленного конструктора вместо частного замедления, является то, что он создает сообщение об ошибке более интуитивным, когда пользователь пытается вызвать его. Можно также утверждать, что он обеспечивает лучшее намерение для тех, кто читает ваш код.

Преимущество частного конструктора:
Он будет совместим с более ранними стандартами языка, и имеет более широкий диапазон поддержки компилятора.

+0

как сделать одиночный класс в C++ 99, если конструктор является общедоступным? – ajay

+0

Как создать экземпляр singleton теперь, когда конструктор удален? – Jarod42

+0

@ Jarod42 Вы должны предоставить другой открытый метод, который возвращает указатель на внутренне построенный объект. –

Смежные вопросы