Там только один синглтон.Нет смысла копировать его.Вам нужно две вещи, чтобы копия была в здравом уме, и большинству операторов копирования нужно проверять наличие self==&other
, чтобы быть в безопасности.
Этот трюк private
является взломом. C ++ 0x делает это лучше.
Начало разглагольствования ...
ИМХО Синглтон - это противоречие в терминах.Это продукт глупой идеи, что все должно быть объектом для инкапсуляции.Это та же самая головная боль, которую несут Java Math.sin(x)
и др.
Ваша жизнь станет проще, если «синглтон» - это просто набор свободных функций в пространстве имен.Любые частные «члены» синглтона могут быть скрыты в анонимном пространстве имен в .cpp.Инкапсуляция достигнута, и у вас нет этого громоздкого дополнительного синтаксиса.
MyNamespace :: foo ();
вместо
MyClass :: instance () .foo ();