请教qsort中的函数指针问题

geochway 2007-07-19 05:06:49
程序中想要对一个面积序列进行排序,调用的是qsort函数,
但代码编译老出错,不知怎么解决? 主要代码如下:


int TForm1::Compare(const void *p1,const void *p2)
{ //此处省略了比较代码
return 0;
}

int TForm1::AreaSort()
{ qsort(Areas,Count,sizeof(double),Compare);
return 0;
}


错误提示:
Cannot convert 'int (* (_closure )(const void *,const void *))(const void *,const void *)' to 'int (*)(const void *,const void *)'

说明: 如果Comapre不是TForm1的成员函数,而是个单独的函数,则没有问题,
现在的问题是我希望它是成员函数,怎么样才能让qsort正常工作?
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
geochway 2007-07-22
  • 打赏
  • 举报
回复
既然没办法,只有把它从class中搬出来啦.
勉励前行 2007-07-21
  • 打赏
  • 举报
回复
這是兩種不同類型的指針,不能轉換。
如果函數中要用到 Form1 中的數據,你得另想辦法。
geochway 2007-07-19
  • 打赏
  • 举报
回复
能否用指针转换的方式把Comapre转成需要的形式?
i_love_pc 2007-07-19
  • 打赏
  • 举报
回复
又见季老大!!
jishiping 2007-07-19
  • 打赏
  • 举报
回复
Compare 不能是TForm1的成员函数,将Compare前面的 TForm1:: 去掉就可以了。
i_love_pc 2007-07-19
  • 打赏
  • 举报
回复
使用静态成员函数试试

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧