读书人

请问qsort中的函数指针有关问题

发布时间: 2012-04-04 16:38:51 作者: rapoo

请教qsort中的函数指针问题
程序中想要对一个面积序列进行排序,调用的是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正常工作?


[解决办法]
使用静态成员函数试试
[解决办法]
Compare 不能是TForm1的成员函数,将Compare前面的 TForm1:: 去掉就可以了。
[解决办法]
是不同型的指,不能。
如果函中要用到 Form1 中的,你得另想法。

读书人网 >C++ Builder

热点推荐