ポインターの配列のオブジェクトが、メンバー関数に指定されたパラメーターと同じ名前 (メンバー変数) を持つ回数を数える必要があります。さまざまなアプローチを試しましたが、どれもうまくいきませんでした。私のコードはコンパイルさえしません。エラーは次のとおりです:「エラー C2514: 'MyComparator': クラスにコンストラクターがありません」。比較に使用するクラスのコードと、同時実行数のカウントに使用する関数を次に示します。
//definition of the vector
vector<Class1*> files;
...
int Class2::countNames(string name)
{
return count_if(files.begin(), files.end(), bind2nd(MyComparator(),name));
}
...
class MyComparator{
public:
bool operator()(const CFileType*& ob1, const string &str)
{
return ob1->getName()==str;
}
};
私はこれに何時間も苦労しており、STLを使用してやりたいと思っています。ここでのキャッチは、ポインターのベクトルがあることです。通常のベクトルがあれば、述語関数は必要ありません。私の場合、それにパラメーターを与える必要があり、bind2nd() が正しい方法だと思います。どんな助けでも大歓迎です!