Ребят.Всем привет. Хочу вызвать процедуру qsort из метода структуры PACKETS_HANDLERS Вот прото typedef struct _PACKED_HANDLERS { DWORD num_of_elements; WORD packet_index; WORD packet_ext; WORD packet_attributes; WORD timer; DWORD elements[0x400]; bool logging; int _cdecl cmp_elems(const void *pelem1, const void *pelem2); bool _cdecl prepare_packet(); } PACKED_HANDLERS, *PPACKED_HANDLERS; В методе prepare_packet хочу вызвать процедуру qsort. Вызываю. Вот так qsort(&elements, num_of_elements, 4, &cmp_elements); Компилятор выдает ошибку, "не могу забоундить символ" Помогите. Как из метода вызвать процедуру qsort с указателем на процедуру сравнения, которая так же будет методом структуры.
Ответ на приведённую формулировку - сделать процедуру сравнения статическим методом (иными словами, добавить ключевое слово static перед объявлением то ли cmp_elems, то ли cmp_elements).
diamond Работает. Спасибо! Скажите пожалуйста, а почему, если метод НЕ статический - программа не компилируется?
Потому что (нестатические) функции-члены вызываются не так, как обычные функции (например, им нужен указатель this). Сишный qsort ничего не знает про C++'овские классы и соответственно может вызвать только обычные функции.