Сразу к делу:
есть some.hpp и some.cpp
some.hpp
#ifndef _SOME_HPP
#define _SOME_HPP
namespace Some{
extern string text;
extern void Do();
}
#endif
some.cpp
#include "some.hpp"
string Some::text = "ололо";
void Some::Do()
{
buffer = "text1_"; //шаг 1
buffer += Some::text; //шаг 2
buffer += "_text2"; //шаг 3
}
buffer это тоже стринг, обьявленный через экстерн
Ожидаемый результат функции Do(): "text1_ололо_text2"
В чем проблема:
шаг 1: все прекрассно
шаг 2: все прекрассно
шаг 3: в buffer-е не произошло никаких изменений!
т е я могу повторять первый шаг сколько угодно, но как только мы пройдем через второй шаг уже больше в буффер ничего не возможно добавить
В итоге получаем "text1_ололо"
Для меня это мистика О_О
А! И еще: если вместо Some::text использовать другой стринг, то все ОК, но это же не выход!
И ЕЩЕ: если второй шаг немножко изменить: buffer += &Some::text[0]; то никаких проблем, но это же не выход!
Это такая наглая особенность стрингов обьявленных через экстерн?
Иииииии....... что это за аномалия такая?
ps: извиняюсь что создал новую тему, затупил
UPD: Обнаружил еще места в которых присваивание тупо не работает без видимых причин