使用成员函数作为比较器的问题排序

新手上路,请多包涵

尝试编译以下代码我得到这个编译错误,我该怎么办?


ISO C++ 禁止使用不合格或带括号的非静态成员函数的地址来形成指向成员函数的指针。

 class MyClass {
   int * arr;
   // other member variables
   MyClass() { arr = new int[someSize]; }

   doCompare( const int & i1, const int & i2 ) { // use some member variables }

   doSort() { std::sort(arr,arr+someSize, &doCompare); }

};

原文由 Navid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 628
1 个回答

只需将您的辅助函数设为静态,您将在排序函数中传递它。

例如

struct Item
{
int val;
int id;
};

//Compare function for our Item struct
static bool compare(Item a, Item b)
{
return b.val>a.val;
}

现在你可以在你的排序函数中传递它

原文由 Aayush Rawat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题