Название: Ошибка с std::list Отправлено: phpCoder от Август 11, 2015, 13:02 Добрый день.
C++ опять парит. Код В тех местах, где комменты выдает мне: Мерг: C:\Qt\Qt5.5.0\Tools\mingw492_32\i686-w64-mingw32\include\c++\bits\list.tcc:346: ошибка: no match for 'operator<' (operand types are 'boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >' and 'boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >') if (*__first2 < *__first1) ^ Ремув: C:\Qt\Qt5.5.0\Tools\mingw492_32\i686-w64-mingw32\include\c++\bits\list.tcc:290: ошибка: no match for 'operator==' (operand types are 'boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >' and 'const value_type {aka const boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >}') if (*__first == __value) ^ Вопрос: че ему не так? Название: Re: Ошибка с std::list Отправлено: Пантер от Август 11, 2015, 13:40 У BoostPolygon не определены операторы сравнения.
Название: Re: Ошибка с std::list Отправлено: phpCoder от Август 11, 2015, 13:53 Мде.. А говорят, что boost крутой...
Хорошо, может Вы знаете, как тогда из std::list удалить какие объекты, которые не имеют оперов сравнения? Название: Re: Ошибка с std::list Отправлено: ksk- от Август 11, 2015, 14:02 А почему бы не хранить в списке вместо объектов указатели на них?
Название: Re: Ошибка с std::list Отправлено: phpCoder от Август 11, 2015, 14:21 Массив results, который принимает бустовская функция и модифицирует, содержит объекты. Поэтому с объектами и работаю. А как можно перегнать объект в указатель на него так, чтобы после завершения работы функции эти указатели ссылались на корректные объекты, а не на мусор?
Название: Re: Ошибка с std::list Отправлено: __Heaven__ от Август 11, 2015, 14:25 Просто класть в контейнер обычные указатели
Название: Re: Ошибка с std::list Отправлено: Igors от Август 11, 2015, 14:34 Мде.. А говорят, что boost крутой... Ну вообще-то даХорошо, может Вы знаете, как тогда из std::list удалить какие объекты, которые не имеют оперов сравнения? merge сливает сортированные листы, оно здесь не к месту. Не надо шиковать с foreach, скромно итератором перебирайте и по итератору удаляйте, псевдокодКод И вообще в ГИС'ах спрашивайте :) А почему бы не хранить в списке вместо объектов указатели на них? Потому что противоречит идее std::listНазвание: Re: Ошибка с std::list Отправлено: _Bers от Август 13, 2015, 00:33 Мде.. А говорят, что boost крутой... Хорошо, может Вы знаете, как тогда из std::list удалить какие объекты, которые не имеют оперов сравнения? лист тут не при делах. ему оператор сравнения не нужен. проблема у вас с бустом: Код: 'boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >' and 'boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >') Название: Re: Ошибка с std::list Отправлено: Igors от Август 13, 2015, 08:45 лист тут не при делах. std::list здесь хороший выбор контейнера, просто не нужно merge которое требует <. Спокойно собрать все новые в др list а потом splice (то видать не дочитал)ему оператор сравнения не нужен. проблема у вас с бустом: |