Nella mia classe chiamata Mat
, voglio avere una funzione che prende un'altra funzione come parametro. In questo momento ho le 4 funzioni di seguito, ma ottengo un errore quando si chiama print(). La seconda riga mi dà un errore, ma non capisco perché, dal momento che il primo funziona. L'unica differenza è la funzione f
non è un membro della classe Mat
, ma è f2
. Il fallimento è: error: no matching function for call to Mat::test(< unresolved overloaded function type>, int)'
C++ - <tipo funzione sovraccarico non risolto>
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
}
Perché accade questo?
È 'f2' statico o no? –
Provare a cambiare la chiamata printf a printf ("% d \ n", test (Mat :: f2, 5)); – 2to1mux
Avete più di un sovraccarico di 'f2'? –