कॉल के लिए कोई मिलान फ़ंक्शन नहीं मतलब जब हम कुछ निश्चित फ़ंक्शंस को कॉल कर रहे होते हैं, लेकिन उस फ़ंक्शन की आईडी उस फ़ंक्शन के आर्गुमेंट से मेल नहीं खाती जो परिभाषित है। इसलिए हमें C++ में 'no matching function for a call' त्रुटि प्राप्त होती है। जब भी कंपाइलर बताता है कि कोई मिलान मेथड नहीं हैं, तो यह आमतौर पर इंगित करता है कि कंपाइलर ने एक मेथड की पहचान की है जिसका नाम वैसा ही है जैसा हमने फ़ंक्शन को पैरामीटर्स दिए थे।
इसलिए जब हम निर्दिष्ट मेथड के गलत प्रकार या फ़ंक्शन के अनुचित पैरामीटर सेट को पास करना जारी रखते हैं। एक फ़ंक्शन परिभाषा कंपाइलर को मेथड का नाम और साथ ही इसे कैसे लागू करना है निर्दिष्ट करती है। फ़ंक्शन की संपूर्ण सामग्री स्पष्ट रूप से घोषित की जा रही है। इस लेख में, हम इस बारे में बात करेंगे कि C++ में 'No matching function for a call' त्रुटि कैसे दिखाई देती है।
क्लास के ऑब्जेक्ट का उपयोग करें
इस परिदृश्य में, कॉल के दौरान फ़ंक्शन पैरामीटर मेल नहीं खा रहा है, इसलिए हम वहां पॉइंटर्स पास करने का प्रयास करेंगे जहां रेफरेंस की आवश्यकता है और फ़ंक्शन कॉल में विभिन्न क्लास रेफरेंस प्रकारों का उपयोग करेंगे। जब भी हम फ़ंक्शन को लागू करते हैं लेकिन फ़ंक्शन परिभाषा का आर्गुमेंट मेल नहीं खा रहा है, तो C++ में 'No matching function for call' त्रुटि उत्पन्न होती है।
अब हमें इस त्रुटि को ठीक करना है; इस उद्देश्य के लिए, हम फ़ंक्शन की परिभाषा के दौरान उपयुक्त मिलान पैरामीटर प्रदान करते हैं। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है।
कोड की शुरुआत में, हम लाइब्रेरी
अगली पंक्ति में, हम एक और फ़ंक्शन setValue() लागू करते हैं। यह मेथड अपने आर्गुमेंट के रूप में चर 'value' रखता है। हम उस मान में वृद्धि करते हैं जिसे इसके आर्गुमेंट्स के रूप में पास किया गया था। फिर हम main() फ़ंक्शन को कॉल करते हैं, और हमें 'argc' पूर्णांक डेटा प्रकार का और 'argv' कैरेक्टर डेटा प्रकार का पॉइंटर इसके आर्गुमेंट्स के रूप में दिया जाता है। 'argc' कोड में ऑपरेटिंग सिस्टम से प्रदान किए गए पैरामीटर्स की संख्या है। 'argv' पैरामीटर्स का संग्रह है।
अब हम क्लास 'A' का एक ऑब्जेक्ट 'obj' बनाते हैं। हम setValue() फ़ंक्शन मेथड को लागू करते हैं। 'obj' को इसके आर्गुमेंट्स के रूप में पास किया जाता है। लेकिन हमने ऑब्जेक्ट को क्लास से कनेक्ट नहीं किया। इसीलिए जब हम setValue() फ़ंक्शन को कॉल करते हैं, तो यह त्रुटि लौटाता है क्योंकि हमारे पास वह क्लास नहीं है जहां हम setValue() फ़ंक्शन को लागू करते हैं। उपरोक्त कोड में, हम setValue() फ़ंक्शन कॉलिंग आर्गुमेंट के भीतर एक क्लास ऑब्जेक्ट पास कर रहे हैं, लेकिन अगर हम setValue() फ़ंक्शन परिभाषा में जांचते हैं, तो हम पासिंग आर्गुमेंट value को पूर्णांक मानते हैं। कोड को समाप्त करने के लिए, हम 'return 0' कमांड का उपयोग करते हैं। यहां उपरोक्त वर्णित कोड के आउटपुट को सत्यापित किया जा सकता है।
उपरोक्त कोड को निष्पादित करने के बाद हमें 'no matching function for call to A' त्रुटि प्राप्त होती है।
इस त्रुटि को कैसे हल करें?
मेथड कॉल के दौरान इस त्रुटि को ठीक करने के लिए, हमें फ़ंक्शन को पर्याप्त संबंधित पैरामीटर प्रदान करने होंगे। इस त्रुटि को हल करने का दूसरा तरीका विभिन्न पैरामीटर्स के साथ अलग-अलग ओवरलोडेड फ़ंक्शंस बनाना है। यहां हम सिर्फ main() फ़ंक्शन के आर्गुमेंट को संशोधित करते हैं। इस प्रकार C++ में 'no matching function for the call' त्रुटि हटा दी जाएगी। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है।
मानक नेमस्पेस का उपयोग करने के बाद, हम हेडर फ़ाइल
अगले चरण में, हम main() मेथड को लागू करते हैं। main() फ़ंक्शन के भीतर, हम 'argc' पूर्णांक डेटा प्रकार का और 'argv' कैरेक्टर डेटा प्रकार का इसके आर्गुमेंट्स के रूप में प्रदान करेंगे। 'argc' प्रोग्राम में ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए पैरामीटर्स की संख्या दिखाता है। 'argv' एक पैरामीटर संग्रह है। अब हम क्लास 'A' का एक ऑब्जेक्ट बनाएंगे जिसे 'obj' कहा जाता है। हम पूर्णांक डेटा प्रकार के चर 'value' को इनिशियलाइज़ करते हैं। हम ऑब्जेक्ट के setValue() मेथड का उपयोग करते हैं और इस फ़ंक्शन के पैरामीटर्स के रूप में 'value' सेट करते हैं।
अंत में, हम प्रोग्राम को बंद करने के लिए 'return 0' जोड़ते हैं। याद रखें कि हमें main() फ़ंक्शन में फ़ंक्शंस और उनके आर्गुमेंट्स के समान डेटा प्रकार दर्ज करने होंगे। फिर हम उस फ़ंक्शन को इसके ऑब्जेक्ट में पास करते हैं और इसे लौटाते हैं। यहां उपरोक्त वर्णित कोड के आउटपुट को सत्यापित किया जा सकता है।
आउटपुट सफलतापूर्वक दिखाता है कि त्रुटि हल हो गई है।
निष्कर्ष
इस लेख में, हमने 'no matching function for a call' त्रुटि प्राप्त करने के कारणों का पता लगाया है और इसे कैसे हल करें। जब भी हमें यह त्रुटि प्राप्त होती है, तो हमें आवश्यक मेथड्स के पैरामीटर्स के साथ-साथ उनके डेटा प्रकार की जांच करनी होगी। हम फ़ंक्शन आर्गुमेंट्स को आर्गुमेंट्स प्रदान करते समय गलतियां करते हैं। हम पैरामीटर्स को फ़ंक्शन से मिसमैच करते हैं। हमें निर्दिष्ट मेथड को मिलान पैरामीटर देने की आवश्यकता हो सकती है। या हमें समान डेटा प्रकार के साथ एक नया फ़ंक्शन जोड़ना होगा। प्रोग्राम में फ़ंक्शन में उपयुक्त पैरामीटर्स की जांच और जोड़ के बाद, त्रुटि 'no matching function for a call' हल हो जाएगी।
लेखक के बारे में
Kalsoom Bibi
नमस्ते, मैं एक फ्रीलांस लेखक हूं और आमतौर पर Linux और अन्य प्रौद्योगिकी संबंधित सामग्री के लिए लिखती हूं।