假設我有這個類:傳遞函數的一類
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'。 –