Среда, 18 Декабря 2024, 06:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблемка с переменными...
GrossCageДата: Суббота, 21 Апреля 2012, 18:06 | Сообщение # 1
Плюсовый Сишник
Сейчас нет на сайте
Короче, есть цикл, for:
(псевдокод: )
Code

for (int i = 1; i = platforms_count; i++){
         platfSpr->Render(GetX("levels.ini", "TEST_LEVEL", "platf_"+i+"_x"), GetY("levels.ini", "TEST_LEVEL", "platf_"+i+"_y"))
}

Проблема в том, что компилятор ругается на что-то типа "Не удается перевести переменную типа char, char[7], char* в operator+"
Компилятор MinGW, Dev-C++.


PixelPong - готов

Сообщение отредактировал GrossCage - Суббота, 21 Апреля 2012, 18:28
НохчиДата: Суббота, 21 Апреля 2012, 18:19 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Quote
"platf_"+i+"_x"

Quote
"platf_"+i+"_y"

Кто тебе сказал, что так можно делать?

ЗЫ. цикл тоже не правильный.


Многие вопросы по Windows отпадут, если посмотреть тут
GrossCageДата: Суббота, 21 Апреля 2012, 18:22 | Сообщение # 3
Плюсовый Сишник
Сейчас нет на сайте
Нохчи, Я знаю, надо перевести i в char. А с циклом-то что не так?

PixelPong - готов
НохчиДата: Суббота, 21 Апреля 2012, 18:26 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Quote
Я знаю, надо перевести i в char

i надо перевести в строку и приаттачить ее к "platf_".
Quote
А с циклом-то что не так?

1)i не инициализирована
2)если platforms_count != 0, будет вечный цикл, иначе внутрь цикла вообще не попадешь.
Подозреваю, что должно быть так:
Code

for (int i = 0; i<platforms_count; i++)


Многие вопросы по Windows отпадут, если посмотреть тут
GrossCageДата: Суббота, 21 Апреля 2012, 18:27 | Сообщение # 5
Плюсовый Сишник
Сейчас нет на сайте
Нохчи, А как перевести? (с циклом тупанул smile )

PixelPong - готов

Сообщение отредактировал GrossCage - Суббота, 21 Апреля 2012, 18:28
НохчиДата: Суббота, 21 Апреля 2012, 18:35 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Code

char buffer_x[32];
char buffer_y[32];

for (int i = 1; i < platforms_count; i++){
sprintf(buffer_x,"platf_%d_%s",i,"_x");
sprintf(buffer_y,"platf_%d_%s",i,"_y");
platfSpr->Render(GetX("levels.ini", "TEST_LEVEL", buffer_x), GetY("levels.ini", "TEST_LEVEL", buffer_y))
}


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Суббота, 21 Апреля 2012, 18:41
GrossCageДата: Суббота, 21 Апреля 2012, 18:36 | Сообщение # 7
Плюсовый Сишник
Сейчас нет на сайте
Нохчи, Спасибо smile

PixelPong - готов
ТритонДата: Понедельник, 23 Апреля 2012, 15:17 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Quote (GrossCage)
"Не удается перевести переменную типа char, char[7], char* в operator+"
Переменные не переводятся в операторы. Давай дословный егог.

Добавлено (23.04.2012, 15:14)
---------------------------------------------
Quote (Нохчи)
1)i не инициализирована
читай:
Quote (GrossCage)
(int i = 1;


Добавлено (23.04.2012, 15:17)
---------------------------------------------
Quote (GrossCage)
for (int i = 1; i = platforms_count; i++){
На втором месте пишется такое условие, чтоб цикл продолжался, пока оно истинно, а ты написал присваивание конкретного значения. Даже если написать ==, то такое равенство возможно только один раз, если platforms_count отличается от 1, то цикл не запустится, иначе выполнится 1 раз, в таких случаях цикл не нужен, достаточно альтернативы и счётчик цикла заводить не надо, а с оператором = (не путать с ==) нарушен ещё и синтаксис.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Суббота, 28 Апреля 2012, 07:40
НохчиДата: Вторник, 24 Апреля 2012, 07:32 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Quote
читай:
там сообщение исправлено, в первоначальном варианте все было куда брутальней. хД


Многие вопросы по Windows отпадут, если посмотреть тут
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг