具有自定义比较函数结果的 std::sort 函数错误:必须调用对非静态成员函数的引用

新手上路,请多包涵

在类中定义时,我无法将 std::sort 函数与我的自定义比较函数一起使用。

 class Test {
    private:
        vector< vector<int> > mat;
        bool compare(vector<int>, vector<int>);
    public:
        void sortMatrix();
}

bool Test::compare( vector<int> a, vector<int> b) {
    return (a.back() < b.back());
}

void Test::sortMatrix() {
    sort(vec.begin(), vec.end(), compare);
}

我收到以下错误消息:

 error: reference to non-static member function must be called
        sort(vec.begin(), vec.end(), compare);
                                     ^~~~~~~

然而,当我在没有任何类的文件 main.cpp 中定义 compare()sortMatrix() 时,一切正常。我将不胜感激任何帮助和建议。

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

阅读 680
1 个回答
Make your comparator function static. It will work.

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

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