在qsort C ++中无效使用非静态成员函数

时间:2016-11-14 03:54:51

标签: 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是后缀

的指针数组

编译时,出现错误: 无效使用非静态成员函数

我使用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);

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

在C ++中,您需要将独立函数或静态成员函数(与非静态成员函数相对)传递给qsort,因为非静态成员函数的调用约定需要实例通过了。

您有两个解决此问题的方法:

  • pstrcmp的声明移出SuffixArray课程,或
  • 在班级中声明pstrcmp静态。