【发布时间】:2016-12-28 16:11:16
【问题描述】:
假设我有这个类:
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 抱歉,已添加。
-
@SomeoneWithAQuestion 使用
std::function和 c++ 代码。 -
@SomeoneWithAQuestion
// Doesn't compile信息量不大。在您的问题中发布 minimal reproducible example 和逐字错误消息。 -
您定义了构造函数,但您从未在类中声明它...