Тема: string. Problems?
Показать сообщение отдельно
Старый 19.11.2012, 23:43   #1
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
string. Problems?

Сразу к делу:
есть 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: Обнаружил еще места в которых присваивание тупо не работает без видимых причин
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием