Название: Непонятки с QVector Отправлено: Martiro от Апрель 11, 2013, 14:52 Есть структуры:
Код
Пытаюсь заполнять структуры: Код
В итоге, в месте где: Код всё проходит нормально, а в месте Код в процессе исполнения консоль пишет: QGVector::insert: Index -1 out of range Почему так? Ведь условие проходит? Или я неправильно задаю новое количество элементов в векторе? Название: Re: Непонятки с QVector Отправлено: Bepec от Апрель 11, 2013, 14:57 Тебе прямым текстом написали :D
Что у тебя происходит обращение к элементу вектора "-1". Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 11, 2013, 15:05 Читать-то я умею. :)
Я не понимаю, почему он пытается обратиться к элементу с индексом "-1"? Ведь после выполнения ресайза, каунт должен измениться на единицу и тогда, при первой итерации, он должен обращаться к "нулевому" ("0") элементу! А он вообще ресайз не выполняет, в отличае от случая с "vPolyLine.m_Points.resize(j+1)"! Название: Re: Непонятки с QVector Отправлено: kambala от Апрель 12, 2013, 00:22 зачем делать ресайз на каждой итерации? можно просто push_back()
Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 08:13 Не собирает. Говорит:
no matching function for call to 'QPtrVector<smallVector>push_back(smallPoint)' Этож QVector, а не vector... Название: Re: Непонятки с QVector Отправлено: Bepec от Апрель 12, 2013, 08:15 То, что QVector имеет все методы stl, вас не смущает? Должно собираться.
Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 08:39 Собиратся должно было, если бы это был QT4. А у меня третий.
Название: Re: Непонятки с QVector Отправлено: Igors от Апрель 12, 2013, 08:59 Не собирает. Говорит: Ну видимо правильно говорит - не может привести smallPoint к smallVector. В любом случае resize уберите, они здесь совсем не нужныno matching function for call to 'QPtrVector<smallVector>push_back(smallPoint)' Этож QVector, а не vector... Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 09:08 Это опечатка. Машинально набрал отруки. Там везде smallPoint.
Разве я могу делать инсерт, без предварительного ресайза. Я ведь изначально создаю кувектор с нулевым количеством указателей. Название: Re: Непонятки с QVector Отправлено: Old от Апрель 12, 2013, 09:24 Разве я могу делать инсерт, без предварительного ресайза. Я ведь изначально создаю кувектор с нулевым количеством указателей. Конечно можете, а вот по индексу установить через [] нет.Название: Re: Непонятки с QVector Отправлено: Bepec от Апрель 12, 2013, 09:25 Вы уточните какой у вас Qt. А то в третьем вообще нету QVector как бы :D
(http://img0.joyreactor.cc/images/thumbnail/templates/solo/seriously_m.png) Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 09:32 The QVector class has been renamed QPtrVector in Qt 3.0
Так что он как бы есть. Название: Re: Непонятки с QVector Отправлено: Bepec от Апрель 12, 2013, 09:57 Не тормозите, уважаемый. Если у вас в коде имеется тяпдефы, приводите их.
А то вы не даёте никакой информации, приводите код использующий классы из следующих версий Qt. PS мб вы ещё что-нить скрываете ? PPS уточните всё же версию Qt. Просто тройка, али ещё какая? (3.3? 3.1? 3.0?) И вроде бы QValueVector является STL реализацией вектора в тройке. Он вам не подойдёт? Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 10:15 Прошу прощения за то, что сразу все не написал. Просто сам не сразу разобрался в чем дело. Думал от QVector ушли на стадии перехода от версии Qt2 к Qt3. А как оказалось, его потом вернули в версии Qt4, причем со всеми функциями СИшного vector.
Собирал все под Qt3.3.8. Использовать QValueVector нельзя (прописано в ТЗ). Сейчас буду общатся с заказчиком по поводу использования 4-й версии Qt. Название: Re: Непонятки с QVector Отправлено: Bepec от Апрель 12, 2013, 10:24 typedef QValueVector QVector; ?
PS но это плохо, когда заказчик лезет в самый самый код по ТЗ. ;) Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 10:31 Есть общий h-ник со структурами, под который исполнители создают различные функции.
Вопрос снят. Договорился насчет 4-й версии, убедил. Но причина обращения к "-1" элементу мне так и не ясна. :) Название: Re: Непонятки с QVector Отправлено: kambala от Апрель 12, 2013, 12:20 дебагом что ли не смотрел?
Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 16:43 Писать и отлаживать приходится под виртуалкой (мсвс). Там отладчики либо работают криво, либо вообще не работают.
Название: Re: Непонятки с QVector Отправлено: Alex Custov от Апрель 12, 2013, 16:44 printf никто не отменял же
Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 17:16 Я в курсе. А еще есть qDebug. Вот ими-то, увы, и приходится пльзоваться.
По qDebug условие resize проходит, а insert не срабатывает. Получается, что размер никогда не меняется, хотя во второй "if(... .resize() )" входит, говорит, что "true", а размер не изменяет. Название: Re: Непонятки с QVector Отправлено: Old от Апрель 12, 2013, 17:22 Получается, что размер никогда не меняется, хотя во второй "if(... .resize() )" входит, говорит, что "true", а размер не изменяет. А в Qt3 resize что-то возвращает? В Qt4 и Qt5 - void.Название: Re: Непонятки с QVector Отправлено: Martiro от Апрель 12, 2013, 17:35 а там bool. :)
Название: Re: Непонятки с QVector Отправлено: andrek от Апрель 16, 2013, 16:18 есть проблема заюзать std::vector ?
|