我有以下课程
class foo{
private:
struct bar{
double rng;
...
};
struct baz{
bar abar;
...
};
void foobar();
static bool cmp(baz a, baz b);
...
};
cmp 函数执行以下操作:
bool foo::cmp(baz a, baz b){
return (a.abar.rng < b.abar.rng);
}
现在我想在 foobar 函数中进行排序:
void foo::foobar(){
std::vector<baz> aVec;
// fill aVec
std::sort(aVec.begin(), aVec.end(), cmp);
}
这会产生许多编译错误,第一个是:
> stl_algo.h: no match for call to '(__gnu_cxx::_normal_iterator<foo::baz*,
> std::vector<foo::baz> >) (foo::baz&, foo::baz&)'
怎么了?