在我的类Mat
中,我想要一个函数,它将另一个函数作为参数。现在我有下面的 4 个函数,但是在调用 print() 时出现错误。第二行给了我一个错误,但我不明白为什么,因为第一行有效。唯一的区别是函数f
不是类的成员Mat
,而是f2
。失败是:error: no matching function for call to Mat::test( < unresolved overloaded function type>, int)'
template <typename F>
int Mat::test(F f, int v){
return f(v);
}
int Mat::f2(int x){
return x*x;
}
int f(int x){
return x*x;
}
void Mat::print(){
printf("%d\n",test(f ,5)); // works
printf("%d\n",test(f2 ,5)); // does not work
}
为什么会这样?