我想使用引用到我的实例作为排序函数的参数。
我有vector<CMail> log
,在CMail
类有函数比较我想要的
我想对log
排序,所以我有:
bool sortFunction(CMail a, CMail b){
return (a.CompareByTimeStamp(b) < 0) ? true : false;
}
然后
sort(log.begin(), log.end(), sortFunction);
很好。但是我可以有函数的参数作为参考吗?
bool sortFunction(CMail &a, CMail &b){
...
}
当我这样做时,我的代码无法编译。
我该怎么做?
总之:const
ness。你需要:
bool sortFunction(const CMail& a, const CMail& b){
return (a.CompareByTimeStamp(b) < 0);
}
这也意味着你的CompareByTimeStamp
的签名必须是:
int CompareByTimeStamp(const Cmail& other) const; // (inside class Cmail {...};)
// ^ b is const ^ a is const
。这都是因为比较两个对象不应该改变它们。