C++ qsort C+;中非静态成员函数的使用无效+;
下面是我在SuffixArray类中的函数:C++ qsort C+;中非静态成员函数的使用无效+;,c++,C++,下面是我在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是后缀的指针数组 当我编译它时,有一个错误: 非静态成员函数的使用无效 我用no
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);
<> P>有人能帮助我吗? < P> C++中,您需要将一个独立的函数或一个静态成员函数(与非静态成员函数相对)传递给<代码> qStase,因为非静态成员函数的调用约定需要一个实例通过。 您有两种解决此问题的方法:
- 将
的声明移出pstrcmp
类,或subfixarray
- 在类中声明
静态pstrcmp