|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
||||||
Непонятный баг11.08.2011, 22:15. Показов 2250. Ответов 14
Метки нет (Все метки)
Пишу программу на Си++ с использованием Qt и FMOD.
Вот место, где глючит (тут только куски кода, не весь):
0
|
||||||
| 11.08.2011, 22:15 | |
|
Ответы с готовыми решениями:
14
Непонятный оператор if Непонятный вывод на форму |
| 12.08.2011, 01:06 | |
|
1. Используйте теги форматирования!!! Они не для красоты
2. Расшифруйте, что значит "здесь программа ещё живёт" и "не доживает". что происходит? Что выводит в консоль? Как определили, что именно до этого места не доживает?
0
|
|
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
||
| 12.08.2011, 08:54 | ||
|
Есть подозрение, что playerNumL равен нулю.
Поэтому цикл не выполняется ни разу.
0
|
||
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
|
| 12.08.2011, 18:00 [ТС] | |
|
Извиняюсь, комментарий "а до сюда не доживает" (в том месте где стоит этот комментарий программа уже не работает - она вылетает раньше) надо было расположить на строчку ниже. При этом playerNumL не равно 0 (оно в моём случае равно двойке) и программа вылетает на первой строчке из цикла, т.е. если поставить вывод перед строкой №29 и после, то перед - выведет, а после - нет...
В SWSaver я делал вывод значений "playersL[i].name". Там всё было нормально, а здесь не хочет... PS Извиняюсь за неотформатированый текст в первом сообщении. Когда писал - торопился...
0
|
|
| 12.08.2011, 18:20 | |||||||
|
Вообще, что то в консоль выдает при крахе? Попробуйте закоментировать все тело цикла и поставить
Добавлено через 7 минут А что такое "bug" точнее как создаете, что делаете с ней до этого?
0
|
|||||||
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
||||||||||||||
| 12.08.2011, 18:37 [ТС] | ||||||||||||||
Закомментировал тело цикла. Вместо него намисал вывод текущёго i. Он проходит весь цикл и вылетает на следующем обращении к playersL[i].name.
0
|
||||||||||||||
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
|
| 12.08.2011, 19:25 | |
|
Блин, только сейчас заметил - playersL указывает в никуда.
Вы его передаете в функцию load по значению. Функция модифицирует свой параметр, но при этом переменная playersL остается неизмененной. Вам нужно передать ссылку на этот указатель, то есть void SWSaver::load(std_units* sUnits,swmap *map, int *unitsNum, SWUnit *units, int *playerNum, SWPlayer *&players, int *turnPlayer, int **resources). Тогда все будет тип-топ
1
|
|
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
||
| 12.08.2011, 19:49 [ТС] | ||
|
PS до этого 5 лет программировал на Basic'е. Потом сообразил, что это фигня и перешёл на Си++ Добавлено через 4 минуты Что такое ссылка в Си++ я знаю. А вот Как это работает тут??? Ведь "*&players" это вроде бы всё равно что "players"?!
0
|
||
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||
| 12.08.2011, 20:25 | ||
|
1
|
||
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
|
| 12.08.2011, 20:32 [ТС] | |
|
И как тогда мне нужно изменить вызов функции??? (строка 48 в первом сообщении)
Как мне передать ссылку на уже существующий указатель?
0
|
|
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|
| 12.08.2011, 20:42 | |
|
А вызов функции в этом случае изменять не надо. Изменяется только прототип функции.
0
|
|
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
|
| 12.08.2011, 20:47 [ТС] | |
|
Изменил объявление и инициализацию функции так, как сказал soft.creator, но вызов не менял. И всё заработало. 0_0
Объясните, пожалуйста, в чём дело...
0
|
|
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||||||
| 12.08.2011, 20:52 | ||||||
|
Ну вот упрощённый пример. Первая функция меняет локальную копию указателя, вторая же меняет сам указатель.
1
|
||||||
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
|||||||
| 13.08.2011, 07:20 | |||||||
0
|
|||||||
| 13.08.2011, 07:20 | |
|
Помогаю со студенческими работами здесь
15
Непонятный define# НЕпонятный код
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|