मैं फ़ंक्शन पॉइंटर्स के बारे में पढ़ रहा हूं और अन्य कार्यों के लिए पैरामीटर के रूप में उनका उपयोग करने के बारे में पढ़ रहा हूं। मेरा सवाल यह है कि आप पॉइंटर्स का उपयोग किए बिना संदर्भ द्वारा फ़ंक्शन कैसे पारित करेंगे? मैं इंटरनेट पर जवाब खोजने की कोशिश कर रहा हूं लेकिन मुझे कोई अच्छा जवाब नहीं मिला है। मुझे पता है कि आप इस तरह के संदर्भ से चर पारित कर सकते हैं: void funct(int& anInt);
। आप इस तरह के कुछ कैसे करेंगे, लेकिन एक चर के संदर्भ के बजाय किसी फ़ंक्शन का संदर्भ पैरामीटर था? फ़ंक्शन बॉडी में फ़ंक्शन के संदर्भ का उपयोग कैसे करेंगे?सी ++: किसी अन्य फ़ंक्शन में संदर्भ-टू-फ़ंक्शन कैसे पास करें?
उत्तर
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
चीयर्स & hth,
जिज्ञासा से बाहर, मैं एक फ़ंक्शन के सूचक के बजाय फ़ंक्शन के संदर्भ का उपयोग क्यों करना चाहूंगा? – fredoverflow
@FredOverflow: क्योंकि एक सूचक शून्य या अमान्य हो सकता है। एक संदर्भ गारंटी देता है कि यह मान्य है और शून्य नहीं है (कोई शून्य संदर्भ नहीं है), या फिर प्रोग्राम में कोई त्रुटि है। –
@ एएलएफ पी। स्टीनबाक: "या फिर प्रोग्राम में कोई त्रुटि है" यह सिद्धांत में बहुत अच्छा लगता है लेकिन यदि आपके पास 'sometype & ref = * ptr' जैसा कुछ है; तो सूचक में पता बस पते में कॉपी किया जाएगा संदर्भ में, जो गैर-वैध या शून्य हो सकता है। आप कह सकते हैं कि उपरोक्त कथन अनिश्चित व्यवहार है जब 'ptr' गैर-वैध या शून्य है, लेकिन संकलन या रन-टाइम पर इसका कोई संकेत नहीं होगा, इसलिए यह सुनिश्चित करने के लिए प्रोग्रामर पर अभी भी है यह वैध और गैर-शून्य है, जैसा कि आपने एक सूचक का उपयोग किया था। तो मैं कहता हूं कि प्रोग्रामर में कोई फर्क नहीं पड़ता है। – newacct
- 1. पायथन - किसी अन्य फ़ंक्शन में फ़ंक्शन पास करना
- 2. विविधता फ़ंक्शन में किसी सरणी के तत्व कैसे पास करें?
- 3. आर में किसी फ़ंक्शन में सूची कैसे पास करें?
- 4. रूबी में किसी अन्य को ब्लॉक कैसे पास करें?
- 5. किसी अन्य जावास्क्रिप्ट फ़ाइल में फ़ंक्शन को ओवरराइड कैसे करें?
- 6. सीधे किसी अन्य सी ++ फ़ंक्शन पर जाएं
- 7. फ़ंक्शन में फ़ाइल कैसे पास करें?
- 8. सी ++ में किसी फ़ंक्शन में 2-डी वेक्टर कैसे पास करें?
- 9. सी # किसी अन्य
- 10. मैं विस्क्रिप्ट में किसी अन्य फ़ंक्शन में varargs कैसे पास कर सकता हूं?
- 11. प्रोटोटाइप फ़ंक्शन कैसे पास करें?
- 12. किसी सरणी के तत्वों को कैसे पास करें विविधता फ़ंक्शन
- 13. किसी अज्ञात फ़ंक्शन पर ऑब्जेक्ट संदर्भ कैसे पास करें?
- 14. मुझे किसी फ़ंक्शन में std :: स्ट्रिंग कैसे पास करनी चाहिए?
- 15. किसी फ़ंक्शन में ऑपरेटर पास करना?
- 16. लुआ - किसी अन्य स्क्रिप्ट से फ़ंक्शन का उपयोग कैसे करें
- 17. पास सी ++ ऑब्जेक्ट लूआ फ़ंक्शन
- 18. किसी अन्य फ़ाइल से फ़ंक्शन को कैसे कॉल करें?
- 19. मैं पर्ल में किसी फ़ंक्शन में हैश कैसे पास करूं?
- 20. किसी अन्य फ़ंक्शन के अंदर calc() का उपयोग कैसे करें
- 21. किसी अन्य फ़ंक्शन में एक फ़ंक्शन में परिभाषित और घोषित चरों का उपयोग कैसे करें?
- 22. सी ++ और ओपनजीएल में किसी अन्य फ़ंक्शन के लिए तर्क के रूप में क्लास विधि को कैसे पास किया जाए?
- 23. परिवर्तनीय तर्क वाले फ़ंक्शन में फ़ंक्शन पॉइंटर कैसे पास करें?
- 24. सी ++: मैं किसी फ़ंक्शन को अपने फ़ंक्शन (बिना पैरामीटर जानने के) कैसे पास करूं?
- 25. ggplot के साथ उपयोग के लिए किसी अन्य फ़ंक्शन के भीतर फ़ंक्शन तर्कों को पास/मूल्यांकन कैसे करें?
- 26. उद्देश्य-सी कॉल फ़ंक्शन किसी अन्य वर्ग पर?
- 27. किसी कन्स्ट्रक्टर को पैरामीटर कैसे पास करें?
- 28. सी ++ किसी अन्य वेक्टर
- 29. सी ++ पास फ़ंक्शन के पैरामीटर के रूप में पास सूची
- 30. जेसन में पास फ़ंक्शन और
नोट:। आप कार्यों पारित नहीं कर सकते हैं। आप केवल कार्यों या संदर्भों को पॉइंटर्स पास कर सकते हैं। –