在我的課程Mat
,我希望有一個函數,將另一個函數作爲參數。現在我有以下4個函數,但是在調用print()時出現錯誤。第二行給了我一個錯誤,但我不明白爲什麼,因爲第一行是有效的。唯一的區別是功能f
不是類Mat
的成員,但是f2
是。 故障是:error: no matching function for call to Mat::test(< unresolved overloaded function type>, int)'
C++ - <無法解析的重載函數類型>
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
}
爲什麼會出現這種情況?
'f2'是否是靜態的? – 2013-04-05 18:52:56
嘗試將printf調用更改爲printf(「%d \ n」,test(Mat :: f2,5)); – 2to1mux 2013-04-05 18:57:54
你有多個'f2'超載嗎? – 2013-04-05 18:58:24