Я работаю над библиотекой C ++, которую в идеале я бы оставил только в заголовках.
Для конкретной части этой библиотеки требуется глобальное состояние.
Допустим, ей нужен глобальный вектор строк дляэтот пример.
Я легко могу добиться этого с помощью переменной static
внутри функции:
std::vector< std::string > & GetGlobalStrings( void )
{
static auto g = new std::vector< std::string >();
return *( g );
}
Это прекрасно работает для исполняемых файлов, использующих библиотеку.
Теперь дляпо какой-то причине мне также нужно упаковать эту библиотеку в инфраструктуру macOS.
Внутри этой инфраструктуры есть скомпилированный код, который будет обращаться к этому глобальному состоянию.
Как и исполняемый файл, связанный с этой платформой.
Очевидно, что это не работает, поскольку исполняемый файл и инфраструктура будут иметь отдельные определения для статической переменной, что делает глобальное состояние не таким уж глобальным.
Есть ли способ сделать это удобным способомобразом?