Mat
adlı sınıfımda, başka bir işlevi parametre olarak alan bir işleve sahip olmak istiyorum. Şu anda aşağıdaki 4 işlevi var, ancak print() öğesini çağırırken bir hata alıyorum. İkinci satır bana bir hata veriyor, ama nedenini anlayamıyorum, çünkü ilk çalışma. Tek fark, f
işlevinin Mat
sınıfının bir üyesi değil, f2
ise işlevidir. başarısızlık: error: no matching function for call to Mat::test(< unresolved overloaded function type>, int)'
C++ - <çözümlenmemiş aşırı yüklenmiş işlev türü>
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
}
Bunun nedeni nedir?
'f2' statik mi değil mi? –
Printf aramayı printf olarak değiştirmeyi deneyin ("% d \ n", test (Mat :: f2, 5)); – 2to1mux
'f2''de birden fazla aşırı yüklenme var mı? –