1

自分のインスタンスへの参照を sort 関数のパラメーターとして使用したいと考えています。

私は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){
...
}

これを行ったとき、コードはコンパイルされませんでした。

これどうやってするの?

4

1 に答える 1

5

要するに:constネス。必要なもの:

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

ここを参照してください。これはすべて、2 つのオブジェクトを比較しても変更されるべきではないためです。

于 2013-04-16T13:15:55.340 に答える