Re: Экземпляр static создается множество раз...
От: sergii.p  
Дата: 18.07.19 05:43
Оценка: +4
Здравствуйте, _agg, Вы писали:

_>Компилятор не выводит никаких сообщений что он игнорирует этот static, собирается это все в Visual Studio 2017.

_>КАК ТАКОЕ ПРОИСХОДИТ ЭТО ЖЕ STATIC? КАК ОН МОЖЕТ СОЗДАВАТЬСЯ МНОЖЕСТВО РАЗ, ВРАЗУМИТЕ КТО ПОНЯЛ В ЧЕМ ДЕЛО, ЧЕГО Я НЕ ВИЖУ ЧТО ПРИВОДИТ К МНОЖЕСТВЕННОМУ СОЗДАНИЮ ОБЪЕКТА СО СПЕЦИФИКАТОРОМ STATIC?

static относительно глобальной переменной ведёт себя иначе по сравнению с переменной в классе или функции. И не гарантирует единичного создания. Он только говорит, что переменная должна быть уникальна для данного файла. В вашем случае в каждом месте, где вы подключаете transfer.h получаете отдельный экземпляр currentClientVersion.
Можете обернуть переменную currentClientVersion в функцию или класс
Utils::VERSION& getCurrentClientVersion()
{
    static Utils::VERSION currentClientVersion;
    return currentClientVersion;
}

, или объявить extern const Utils::VERSION currentClientVersion в заголовочном и инициализировать в одном из cpp.
Отредактировано 18.07.2019 5:47 sergii.p . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.