В моем классе под названием Mat
, я хочу иметь функцию, которая принимает другую функцию в качестве параметра. Прямо сейчас у меня есть 4 функции ниже, но я получаю сообщение об ошибке при вызове print(). Вторая строка дает мне ошибку, но я не понимаю, почему, поскольку первый работает. Единственное отличие заключается в том, что функция f
не является членом класса Mat
, но f2
is.
Ошибка: 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
}
Почему это происходит?