Работает ли Meyers Singleton в сценарии с динамическими библиотеками?
I.e. одна библиотека, определяющая одноэлемент, другие, использующие ее, каждая в своей собственной единице компиляции?
(Я предполагаю, что это не имеет значения, но специфическая архитектура представляет собой приложение с рамками на OS X)Meyers singleton и динамические библиотеки
Я использую шаблон ваниль Meyers Singleton: Следующий Instance()
метод определен встроенным в заголовочном файле для грузового класса (который определяется в виде динамической библиотеки):
static Logger& Instance()
{
static Logger singletonInstance;
return singletonInstance;
}
конструктор копирования и operator=
объявлены приватным и не реализованы, поэтому мы должны быть хорошо, верно?
Теперь, если я свяжу эту библиотеку, определяющую синглтон из основного приложения я могу видеть конструктор вызывается несколько раз .. с разными адресами для this
и все странности, я бы ожидать, когда не имея фактический синглтон, но множественный экземпляры класса.
Так что я интересно ли динамические библиотеки подход винты вверх одноэлементные Meyers или каждый единица компиляции - библиотека, основное приложение - которое включает в себя заголовок для одноточечного (эффективно объявляющих и определяющего в Instance() метод) получит «собственный экземпляр Singleton»?
Действительно не совсем уверен, что делать с моими наблюдениями, поэтому любые намеки очень ценятся!
Является ли 'static Logger & Instance()' в файле заголовка, который предполагается использовать для получения экземпляра в другом коде? Почему это не «экстерн»? – txtechhelp
- это реальный код? Я ожидал 'Logger :: Instance()' .. –
@KarolyHorvath Да, 'Instance()' определен inline в файле заголовка singleton. Перефразировал вопрос, чтобы сделать это более ясным. – ATV