私は、このクラスがあるとします。クラスに関数を渡す
template<class K, class func1, class func2>
class findMax {
K* key;
func1 cmp;
func2 areSame;
};
template<class K, class func1, class func2>
findMax<K, func1, func2>::findMax(K n, func1 isValid, func2 areSameFunc) {
cmp = isValid;
areSame = areSameFunc;
}
は、どのように私は、このクラスのインスタンスを作るのですか?
私が試してみました:
typedef bool (*someFunc)(int);
typedef bool (*someFunc2)(int, int);
findMax<int, someFunc, someFunc2> u(7, isValid, areSame); // Doesn't compile, error below.
エラーメッセージ:
Invalid arguments '
Candidates are:
findMax(const findMax<int,bool (*)(int, int),bool (*)(int)> &)
findMax()
findMax(int, #10000, ?, ?)
'
:
bool isValid (int k) {
return (k>0);
}
bool areSame (int key, int key2) {
return key==key2;
}
しかし、これは動作しませんが。他のアプローチも試みましたが、これを行う方法が見つかりませんでした。
どうしたらいいですか?
どうしますか? – Carcigenicate
@Carcigenicate申し訳ありません、追加されました。 – SomeoneWithAQuestion
@SomeoneWithAQuestion C++コードで 'std :: function'を使います。 –