qsort算法中的compare函数是类成员函数的问题

reeona 2007-04-17 03:04:01
现在用类封了一个动态变长字符串数组,需要提供对其进行排序的功能.由于qsort中实际比较了要用类的内部成员,故将qsort封在算法内部了,但报错:

../include/var_keyword.h:71: no matches converting function
`_compare_line' to type `int (*) (const void *, const void *)'
../include/var_keyword.h:63: candidates are: int
keyword_var_t::_compare_line (const void *, const void *)

程序段:
//比较函数
inline int keyword_var_t::_compare_line(const void * k1, const void *k2)
{
char * p1=_buf+(*(kvsize_t *)k1);
char * p2=_buf+(*(kvsize_t *)k2);
return strcmp(p1, p2);
}

//sort
void keyword_var_t::_sort_keyword(void)
{
qsort(_array,_size,sizeof(kvsize_t),_compare_line);
}


为什么呢??帮个忙指点一下啦,谢谢:)
...全文
380 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2007-04-17
  • 打赏
  • 举报
回复
要么使用一个 friend 属性的 compare函数
jixingzhong 2007-04-17
  • 打赏
  • 举报
回复
使用 函数对象
reeona 2007-04-17
  • 打赏
  • 举报
回复
并且用了static定义了_compare_line后,用到的类成员_buf也必须定义为STATIC的啊......
reeona 2007-04-17
  • 打赏
  • 举报
回复
没用STL啊...就是避免用STL才这么写的:)

难道还有别的更好的方法吗?:)
  • 打赏
  • 举报
回复
你要非用qsort的话
这样声明函数
static int keyword_var_t::_compare_line(const void * k1, const void *k2)
  • 打赏
  • 举报
回复
都用stl了为啥不用sort?
然后加上mem_fun or mem_fun_ref

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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