我的medianfilter.cpp类如下所示调用qsort
。
vector<float> medianfilter::computeMedian(vector<float> v) {
float arr[100];
std::copy(v.begin(), v.end(), arr);
unsigned int i;
qsort(arr, v.size(), sizeof(float), compare);
for (i = 0; i < v.size(); i++) {
printf("%f ", arr[i]);
}
printf("median=%d ", arr[v.size() / 2]);
return v;
}
我的比较实现如下:
int medianfilter::compare(const void * a, const void * b) {
float fa = *(const float*) a;
float fb = *(const float*) b;
return (fa > fb) - (fa < fb);
}
而在mediafilter.hpp中声明为私有,并且如下所示:
int compare (const void*, const void*);
发生编译错误:
无法将'type 'int (mediafilter::)(const void*, const void*)'的'mediafilter :: compare'转换为'type '__compar_fn_t {aka int (*)(const void*, const void*)}'
我不完全理解这个错误。如何正确声明和实现此比较方法?
谢谢!