कुछ निम्नलिखित की तरह:क्या मैं std :: function type की ऑब्जेक्ट पर इशारा करते हुए एक फ़ंक्शन पॉइंटर परिभाषित कर सकता हूं?
#include <functional>
int main()
{
std::function<int(int)> func = [](int x){return x;};
int* Fptr(int) = &func; //error
}
त्रुटियों मैं
temp.cpp: In function ‘int main()’:
temp.cpp:6:15: warning: declaration of ‘int* Fptr(int)’ has ‘extern’ and is initialized
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘func’
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: function ‘int* Fptr(int)’ is initialized like a variable
लैम्ब्डा समारोह से जाने के लिए सूचक कार्य करने के लिए के रूप में अच्छी तरह से पता करने के लिए उपयोगी होगा एक और अधिक प्रत्यक्ष तरीका है।
आप एसटीडी की ज़रूरत है है: : फ़ंक्शन या आप बस एक (कैप्चर-कम) लैम्ब्डा को फ़ंक्शन पॉइंटर प्राप्त करने का प्रयास कर रहे हैं? – Mat
सं। फ़ंक्शन पॉइंटर्स फ़ंक्शंस को इंगित करते हैं, न कि उन कार्यों की तरह जो कार्य करते हैं। – Galik
@ मूल रूप से मुझे कैप्चर-कम लैम्ब्डा में दिलचस्पी थी। मुझे यकीन नहीं है कि अगर लैम्ब्डा फ़ंक्शन एक रैल्यू बनाने पॉइंटर्स की तरह व्यवहार करेंगे असंभव। – roro