ファイルに書き込まれた電子メールアドレスを格納し、ファイル内のヒットでソートしようとしています。デキューに格納されたクラスオブジェクトの並べ替え
電子メールアドレスとヒット数をemailAddressというクラスに格納しています。
私はそのクラスのメンバーをAddressManagerという別のクラスのDequeで管理しています。
私が使用しようとしているソート機能は、アルゴリズムライブラリのソートです。 Like this.
[emailAddress.released() returns the number of hits. addressQueue is my emailAddress Deque]
bool AddressManager::swapTest(const emailAddress& address1, const emailAddress& address2)
{
cout<<"Comparing: "<<address1.released()<<" to "<<address2.released()<<endl;
return address1.released()>address2.released();
}
void AddressManager::sortAddresses()
{
sort(addressQueue.begin(),addressQueue.end(),
swapTest);
}
私はこのエラーを取得するコンパイル:
1>c:\workspace\addressmanager.cpp(36): error C3867: 'AddressManager::swapTest': function call missing argument list; use '&AddressManager::swapTest' to create a pointer to member
1>c:\workspace\addressmanager.cpp(36): error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(3639) : see declaration of 'std::sort'
は私がソートするswapTest渡すことができ、またはそれは何らかの形でAddressManagerの外で定義する必要があるのでしょうか? 誰かが、自分のソートをAddressManagerで実装する方法を提案し、ライブラリバージョンをまったく使用しないことができますか?
おかげで、 アンク
最近のC++コンパイラは、例えば、フルネームで渡される関数ポインタを必要とします&AddressManager :: swapTestではなく、単にswapTest。また、ソート関数ではなく、型の演算子<をソートしませんか?演算子のオーバーロードではなく、Cスタイルのソートが必要な場合は、qsortを使用するほうがよいでしょう。編集:ファンクタを使用して、3 - paramバージョンのソートがあります。参照:http://www.codeproject.com/KB/stl/stdsort.aspx – Hybrid