这是我在SuffixArray类中的函数:
int pstrcmp(const void *a, const void *b) {
return strcmp((const char *)*(char **)a, (const char *)*(char **)b);
}
我在qsort中使用了这个比较函数:
qsort(ap, len1+len2, sizeof(char *),pstrcmp);
其中ap是后缀
的指针数组编译时,出现错误: 无效使用非静态成员函数
我使用notepad ++来编译它,它提供了
error: cannot convert 'SuffixArray::pstrcmp' from type 'int (SuffixArray::)(const void*, const void*)' to type 'int (*)(const void*, const void*)'
qsort(ap, len1+len2, sizeof(char *),pstrcmp);
有人可以帮助我吗?
答案 0 :(得分:2)
在C ++中,您需要将独立函数或静态成员函数(与非静态成员函数相对)传递给qsort
,因为非静态成员函数的调用约定需要实例通过了。
您有两个解决此问题的方法:
pstrcmp
的声明移出SuffixArray
课程,或pstrcmp
静态。