STL-Sort无法按预期工作

kla*_*add 2 c++ stl stl-algorithm

我觉得好像我正确使用它,但编译器感觉不然.我正在尝试使用stl排序算法在sort_by_name函数中按字母顺序对课程列表进行排序.这大致是我写的:

class SomeClass {
  private:
    struct course {
        string id, name;
    };
    vector<course> COURSES;
    bool nameCmp(course a, course b) {return (a.name > b.name) ? true : false;}
  public:
    void sort_by_name() {
        sort(COURSES.begin(), COURSES.end(), nameCmp);
    }
};
Run Code Online (Sandbox Code Playgroud)

错误:

error: no matching function for call to ‘sort(std::vector<SomeClass::course>::iterator, std::vector<SomeClass::course>::iterator, <unresolved overloaded function type>)’
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

Ker*_* SB 8

将功能更改为:

static bool nameCmp(course a, course b) { return a.name > b.name; }
Run Code Online (Sandbox Code Playgroud)

更好的方法是通过const-reference course const & a等传递参数.