成员函数作为排序的比较
使用成员函数作为排序的比较条件时,由于以下限制,可能会出现编译错误ISO C 标准。该标准禁止直接寻址未限定的或带括号的非静态成员函数来派生指向成员函数的指针。尝试对类中的数组进行排序时可能会遇到此类错误。
要解决此问题,一种解决方案是将比较函数 doCompare 声明为静态。但是,如果该函数依赖于 MyClass 实例中的数据,则另一种方法是将类转换为比较函子。这涉及修改 doCompare 以实现operator() 函数并调用 std::sort,如下所示:
1 |
|
此外,值得考虑 doSort 方法中缺少的返回值。对于完整的实现,它应该类似于:
1 |
|
或者,可以使用 std::mem_fun 和绑定将成员函数转换为自由函数。另一种选择是将函数嵌入到类中,如以下代码片段所示:
1 2 3 4 5 6 7 8 |
|
通过选择这些方法中的任何一种,开发人员可以使用成员函数成功处理类中数组的排序作为比较标准。
以上是如何正确使用C中的成员函数进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!