Сообщение Re: Как наиболее корректно работать с глобальными данными от 07.07.2015 8:13
Изменено 07.07.2015 8:14 MasterZiv
Здравствуйте, lnkuser, Вы писали:
L>Как я понял это как раз случай для синглетона:
L>
L>
L>Все вроде идеально, но тут будет ошибка линкования.
На таком уровне понимания проблемы тебе надо сначала почитать книжку по языку С++ или даже С,
потому что модели памяти у них одинаковые.
Почитай про классы памяти, области видимости и static.
В таком раскладе обе переменные auto g_log должны быть объявлены static, иначе будет нарушение ODR.
L>Как я понял это как раз случай для синглетона:
L>
L>// other_module.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text";
L>
L>
L>// other_module2.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text2";
L>
L>Все вроде идеально, но тут будет ошибка линкования.
На таком уровне понимания проблемы тебе надо сначала почитать книжку по языку С++ или даже С,
потому что модели памяти у них одинаковые.
Почитай про классы памяти, области видимости и static.
В таком раскладе обе переменные auto g_log должны быть объявлены static, иначе будет нарушение ODR.
Re: Как наиболее корректно работать с глобальными данными
Здравствуйте, lnkuser, Вы писали:
L>Как я понял это как раз случай для синглетона:
L>
L>
L>Все вроде идеально, но тут будет ошибка линкования.
На таком уровне понимания проблемы тебе надо сначала почитать книжку по языку С++ или даже С,
потому что модели памяти у них одинаковые.
Почитай про классы памяти, области видимости и static.
В таком раскладе обе переменные auto g_log должны быть объявлены static, иначе будет нарушение ODR.
Да, и к работе потоков это не имеет никакого отношения (пока).
L>Как я понял это как раз случай для синглетона:
L>
L>// other_module.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text";
L>
L>
L>// other_module2.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text2";
L>
L>Все вроде идеально, но тут будет ошибка линкования.
На таком уровне понимания проблемы тебе надо сначала почитать книжку по языку С++ или даже С,
потому что модели памяти у них одинаковые.
Почитай про классы памяти, области видимости и static.
В таком раскладе обе переменные auto g_log должны быть объявлены static, иначе будет нарушение ODR.
Да, и к работе потоков это не имеет никакого отношения (пока).