मेरी कक्षा में Mat
कहा जाता है, मैं एक ऐसा फ़ंक्शन रखना चाहता हूं जो पैरामीटर के रूप में एक और कार्य करता है। अभी मेरे पास नीचे 4 कार्य हैं, लेकिन प्रिंट() को कॉल करते समय मुझे एक त्रुटि मिलती है। दूसरी पंक्ति मुझे एक त्रुटि देता है, लेकिन मुझे समझ में नहीं आता क्यों, क्योंकि पहला काम करता है। केवल अंतर है 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
}
इस क्यों होता है?
क्या 'f2' स्थिर है या नहीं? –
printf को printf ("% d \ n", टेस्ट (Mat :: f2, 5) में बदलने का प्रयास करें; – 2to1mux
क्या आपके पास 'f2' के एक से अधिक अधिभार हैं? –