![]() |
|
![]() ![]() ![]() |
|
kemiisto |
|
||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Что-то я совсем ничего не понимаю. Есть у меня класс Atom
Привёл только ту часть, что по моему мнению имеет отношение к делу. bondedIndexes_ хранит индексы атомов, с которыми данный атом связан. Метод bondWith(int index) вносит index в этот список:
Далее есть класс Molecule:
В методе rebond следующий код:
Тут не суть важно условие, главное, что bondWith() вызывается. Беда в том, что при каждом вызове bondWith() список bondedIndexes_ почему то оказывается пустым. В него добавляется index. Но при следующем вызове список снова пуст. И в конце вызова rebond() у всех атомов список bondedIndexes_ оказывается пустым. ![]() HELP!!! Это сообщение отредактировал(а) kemiisto - 27.8.2009, 13:27 -------------------- |
||||||||
|
|||||||||
just_geek |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Так это
Мне кажется или нужно сделать так
update а лучше, заменить
так как value возвращает новый объект. Это сообщение отредактировал(а) just_geek - 27.8.2009, 14:24 |
||||||
|
|||||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Изначально было так:
Работает точно также. В смысле, не работает. ![]() Можно, конечно, попробовать. Не хочеться иметь список указателей. А это точно что-то изменит? Разве? ![]() Добавлено через 2 минуты и 59 секунд Тьфу! И верно! Надо доступ через [] использовать.
Это сообщение отредактировал(а) kemiisto - 27.8.2009, 14:51 -------------------- |
||||||
|
|||||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Продолжаем КВН.
![]() Теперь такая беда. Есть такой вот класс:
После того, как отработает конструктор по умолчанию, создаётся объект molecule_. У которого создаётся пустой список atoms_. Всё цивильно. Но стоит потом вызваться методу, скажем, mousePressEvent(), в котором есть такое место:
приложение падает. ![]() И писало что-то типа QList: Out of memory. А в режиме отладки напротив этого самого QList значилось <internal error>. Немного погуглив, я наткнулся на это. Переделал чуток, сделав Chemistry::Molecule* molecule_ ну и там в конструкторе явно вызываю:
Теперь оно падает просто без сообщений. А в режиме отладки напротив этого самого QList значицо <out of scope>. HELP!!! -------------------- |
||||||
|
|||||||
just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
А на каких строках падало в обоих случаях? Такое ощущение, что либо память портишь сам. Либо вызываешь функцию не созданного класса.
|
|||
|
||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Падает он на:
а там собственно:
-------------------- |
||||||
|
|||||||
just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
ну и чему в этом месте равно значение указателя? molecue_ то к этому моменту создано? |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
-------------------- |
|||
|
||||
just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
гхм
а если дальше внутрь функции
пройти ? может где то внутри падает? |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
just_geek, да там код то одна строчка:
Падает при добавлении элемента. Если в debug'е - то останавливается на:
из qbasicatomic.h. -------------------- |
||||
|
|||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Пытался менять QList на QVector, std::list, std::vector. Никакой разницы.
![]() -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
пересобири Qt(единственное что на ум пришло).
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
andrew_121, я уж на 3 разных сборках тестил на 3-х разных ОС'ях. Не работает.
![]() -------------------- |
|||
|
||||
fearuth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 9.9.2008 Репутация: нет Всего: 1 |
Попробуй atoms_.append(atom) заменить на:
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
fearuth, пробовал уже. Это одно и тоже. И результат такой же.
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |