У меня есть структура subPolygon
и вектор указателей на эту структуру. Я пытаюсь использовать qsort
для вектора, но функция компаратора отображается как несовместимая. Что я делаю не так?
int cmpFunc(const void *p, const void *q) {
struct subPolygon* p1 = *((struct subPolygon**)p);
struct subPolygon* p2 = *((struct subPolygon**)q);
int s1 = p1->size;
int s2 = p2->size;
if (s1-s2 < 0 ) return -1;
if (s1 == s2) return 0;
return 1;
}
Вот объявление вектора:
vector<subPolygon*> subPolygons;
Звонок qsort
:
qsort(&subPolygons[0], subPolygons.size(), sizeof(struct subPolygon*),cmpFunc);
Изменить: похоже, проблема была в дополнительной ошибке: cmpFunc: non-standard synatx; use & to create pointer to a member "
Моя функция сравнения была членом класса. Qsort был вызван из члена этого класса. Статическая функция моего компаратора решила проблему.
qsort
в С++ для начала? - person Baum mit Augen   schedule 30.04.2018qsort
, как часть базовых вещей. И предположение о поведении C++ на основе опыта работы с Java имеет как минимум серьезные ограничения. Во всяком случае, нормальная функция сортировки в C++ — этоstd::sort
, проверьте это. - person Baum mit Augen   schedule 30.04.2018