Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 20.11.2012, 00:25   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: string. Problems?

что такое buffer. где он объявлен?
(Offline)
 
Ответить с цитированием
Старый 20.11.2012, 00:36   #3
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: string. Problems?

com.hpp
#ifndef _COM_HPP
#define _COM_HPP
extern string buffer; 
#endif
com.cpp
#include "com.hpp"
string buffer = "";
com.hpp инклюдится в some.hpp

upd: и вправду, иесли использовать вместо буффера какой-нить другой новоиспеченный стринг то все ок, но это опять же не выход
И сравнивание не работает
Вообще!
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1

Последний раз редактировалось ANIK123, 20.11.2012 в 01:45.
(Offline)
 
Ответить с цитированием
Старый 20.11.2012, 02:09   #4
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: string. Problems?

string - это std::string?

вполне валидный код.
у меня твоя ошибка не воспроизводится.
(Offline)
 
Ответить с цитированием
Старый 20.11.2012, 02:13   #5
jimon
 
Сообщений: n/a
Ответ: string. Problems?

полный ребилд спасёт
 
Ответить с цитированием
Старый 20.11.2012, 12:25   #6
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: string. Problems?

Может вам целый проект кинуть?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 20.11.2012, 12:51   #7
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: string. Problems?

ну кинь
(Offline)
 
Ответить с цитированием
Старый 20.11.2012, 22:08   #8
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: string. Problems?

Здесь были ссылки, но увы их уже нету

UPD: вся эта канитель с стрингом началась после того, как мне взъёбнуло в бошку подогнать весь код под тотальное использоапние стрингов вместо чаров
после трех-часового труда я радостно обнаружил что задание выполнено, осталось только скомпилить, но не тут то было))) печаль однако(

UPD: Завтыкал! Конкретные фейловые места до которых програмка еще не падает:
присвоение:
level.cpp
buffer = "maps\\";
buffer += &Level::name[0]; //смените на buffer += Level::name;
buffer += "\\background.jpg";
сравнение строк:
db_u.cpp
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1

Последний раз редактировалось ANIK123, 21.11.2012 в 16:00.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:14.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com