![]() |
|
![]() ![]() ![]() |
|
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, пробовал уже. Это одно и тоже. И результат такой же.
-------------------- |
|||
|
||||
fearuth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 9.9.2008 Репутация: нет Всего: 1 |
Может глупость, но зачем знак "_" в конце имени? Попробуй без него. +)
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Это я так private-члены обозначаю. Довольно распространённый способ. Это не повлияет ни на что. ![]() -------------------- |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Up! Помогите!
![]() -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Выложи весь проект куда-то. Если не секрет конечно
![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
andrew_121, не секрет. Если что-то из этого получиться оно будет Open Source.
Если не жалко времени, конечно. Нужно собрать вот эту штуку. Ты ведь линуксоид. Если из сорсов соберёшь, пути в *.pro должны быть правильные. От хлама вроде почистил... Это сообщение отредактировал(а) kemiisto - 30.8.2009, 22:49 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Да. Но собиру под виндавз. Просто сейчас не могу перегрузиться. Оно ведь кросс? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Ага. Только если для debug собирать - убери строчку
из libQGLViewer-2.3.3\QGLViewer\. Собранную либу кинь QDalton\Libraries\, dll - в Binaries\Windows\. Хотя ты лучше меня в этом смыслишь... -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
С этим я согласен. Но вот хидеры libQGLViewer и Eigen включать в поставку проекта не правильно. Это сторонние проекты. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Согласен, но речи о поставке пока не идёт. ![]() Это сообщение отредактировал(а) kemiisto - 30.8.2009, 21:25 -------------------- |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
andrew_121, я дико извиняюсь. Не ту версию приаттачил. Перезакачай, если не напряжно. Там проблема из начала топика решена. Но атомы в молекулу не добавить...
-------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
kemiisto, Обновился.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Как и обещал, выкладываю. Собрал - Win32-debug|release, Linux-release.
http://rghost.ru/430404 Вкратце. Проблема была не в коде, а в сборке. Нельзя для debug сборки использовать release библиотеки, и на оборот. п.с. Кто программу писал? Это сообщение отредактировал(а) andrew_121 - 31.8.2009, 06:23 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
andrew_121,
![]()
Я так понимаю, проблема была в *.pro файле? Это моя поделка. ![]() -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Именно. Удивительно... Тогда не понятно твое недовольство языком С++. Довольно высокое качество кода. Лучше большинства проектов выставленных на http://qt-apps.org/ Можешь смело размещать проект. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
andrew_121, опять та же ситуация. Исходники несколько изменились. Теперь у нас в private секции Chemistry::Molecule сразу 3 QList'а (к тому же один со сложной структурой):
Ну собственно, таже проблема. Отрабатывает конструктор, все 3 списка инициализируются. ![]() При попытке добавить атом в Render::Viewer::mousePressEvent в самом начале ставим точку останова: ![]() Вот. Куда то пропал incidenceMatrix_. Куда? А самое интересное. Если в объявлении поменять местами скажем так:
то на точке останова не будет уже chemistryBonds_ ![]() То есть получается: кто первым объявлен (первым инициализируется в конструкторе?), тот куда-то пропадает. ![]() ![]() ![]() Исходники приложил. Это сообщение отредактировал(а) kemiisto - 4.9.2009, 21:36 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() -------------------- |
||||
|
|||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Немного побегал дебагом. Список портится внутри void Render::Viewer::updateMolecule().
До вызова updateGL() всё отлично, после <internal error>. А это метод (точнее слот) QGLViewer'а. И это уже как-то нехорошо... -------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Да. В GCC это так. Да нет же. Это в стандарте описано. Не ты. Это креатор его по своему записал(если ты менял проект, не исходники). щас гляну... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Я не про порядок вызова конструкторов, а про ситуацию в целом. Я чего то явно не понимаю. А, вообще, язык - полное *****. Как на нём вообще возможно писать? Никогда не знаешь, кто виноват: ты, разработчики компилятора, сторонней библиотеки или стандарта, оставившие слишком много мест с undefined dehaviour, ОС, господь бог, ... ![]() Это сообщение отредактировал(а) kemiisto - 5.9.2009, 11:29 -------------------- |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Жесть. Ночь не спал, а толку 0.
andrew_121, зато я нашёл прикол в своих исходниках. Вот функция:
Это компилируется. Ерунда, что тип возвращаемого значения беззнаковый, а в одной из веток if я возвращаю -1! ![]()
И то warning. Вот это, видимо, и называется строгая типизация. ![]() Это сообщение отредактировал(а) kemiisto - 5.9.2009, 12:18 -------------------- |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
kemiisto, Снова в ту же степь. Знаешь что плохому танцору мешает? Вот вот, я***.
По делу: Нет пока возможности собрать твою программу. Попробуй просто прежний .pro файл подкинь. По идее должно заработать. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
![]()
Сейчас попробую. -------------------- |
||||
|
|||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
-------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
-------------------- |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 2 Всего: 154 |
kemiisto, у тебя этот объект копируется где нибудь? (в смысле не указатель на него, а именно сам объект, deep copy)
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 8 Всего: 160 |
Не очень понял о каком конкретно объекте идёт речь. Если о chemistryMolecule_, то да. Читаем файл, разбираем, создаём молекулу, передаём вьюверу для отрисовки через void Render::Viewer::setMolecule(const Chemistry::Molecule& chemistryMolecule) Вот я её и пытаюсь локлизовать. -------------------- |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 2 Всего: 154 |
я имел ввиду, что объект класса Molecule, может где-нибудь копироваться полностью, ты ведь не определил свой конструктор копирования для него, значит компилятор сделал это за тебя, возможно ты где-то передаешь этот объект по значению, и этот конструктор вызывается и что-то идет не так попробуй определить свой копирующий конструктор и оператор присваивания так -
если код по прежнему будет компилироваться, то проблема в чем-то другом ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |