gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:36:39 25 4
gpt4 key购买 nike

这是我在类 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);

有没有人可以帮助我?

最佳答案

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

这个问题有两种解决方案:

  • pstrcmp 的声明移出 SuffixArray 类,或者
  • 在类中声明 pstrcmp 静态。

关于c++ - 在 qsort C++ 中无效使用非静态成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com