Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ 'No Matching Function for Call' कंपाइलेशन त्रुटि को हल करना

कॉल के लिए कोई मिलान फ़ंक्शन नहीं मतलब जब हम कुछ निश्चित फ़ंक्शंस को कॉल कर रहे होते हैं, लेकिन उस फ़ंक्शन की आईडी उस फ़ंक्शन के आर्गुमेंट से मेल नहीं खाती जो परिभाषित है। इसलिए हमें C++ में 'no matching function for a call' त्रुटि प्राप्त होती है। जब भी कंपाइलर बताता है कि कोई मिलान मेथड नहीं हैं, तो यह आमतौर पर इंगित करता है कि कंपाइलर ने एक मेथड की पहचान की है जिसका नाम वैसा ही है जैसा हमने फ़ंक्शन को पैरामीटर्स दिए थे।

इसलिए जब हम निर्दिष्ट मेथड के गलत प्रकार या फ़ंक्शन के अनुचित पैरामीटर सेट को पास करना जारी रखते हैं। एक फ़ंक्शन परिभाषा कंपाइलर को मेथड का नाम और साथ ही इसे कैसे लागू करना है निर्दिष्ट करती है। फ़ंक्शन की संपूर्ण सामग्री स्पष्ट रूप से घोषित की जा रही है। इस लेख में, हम इस बारे में बात करेंगे कि C++ में 'No matching function for a call' त्रुटि कैसे दिखाई देती है।

क्लास के ऑब्जेक्ट का उपयोग करें

इस परिदृश्य में, कॉल के दौरान फ़ंक्शन पैरामीटर मेल नहीं खा रहा है, इसलिए हम वहां पॉइंटर्स पास करने का प्रयास करेंगे जहां रेफरेंस की आवश्यकता है और फ़ंक्शन कॉल में विभिन्न क्लास रेफरेंस प्रकारों का उपयोग करेंगे। जब भी हम फ़ंक्शन को लागू करते हैं लेकिन फ़ंक्शन परिभाषा का आर्गुमेंट मेल नहीं खा रहा है, तो C++ में 'No matching function for call' त्रुटि उत्पन्न होती है।

अब हमें इस त्रुटि को ठीक करना है; इस उद्देश्य के लिए, हम फ़ंक्शन की परिभाषा के दौरान उपयुक्त मिलान पैरामीटर प्रदान करते हैं। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है।

कोड की शुरुआत में, हम लाइब्रेरी शामिल करने जा रहे हैं, जिसका उपयोग इनपुट और आउटपुट कार्यक्षमताओं के लिए किया जाता है। हम एक मानक नेमस्पेस का भी उपयोग करते हैं। फिर हम 'A' नाम के साथ क्लास इनिशियलाइज़ करते हैं, और हम फ़ंक्शन setValue() को पब्लिक निर्दिष्ट करते हैं। हम इस फ़ंक्शन में पूर्णांक डेटा प्रकार के value पैरामीटर को पास कर रहे हैं। हम क्लास का एक चर 'value' भी इनिशियलाइज़ करते हैं जिसका पूर्णांक डेटा प्रकार है।

अगली पंक्ति में, हम एक और फ़ंक्शन 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' त्रुटि हटा दी जाएगी। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है।

मानक नेमस्पेस का उपयोग करने के बाद, हम हेडर फ़ाइल पेश करते हैं। हम 'A' नाम की एक क्लास बनाते हैं और इसके फ़ंक्शन setValue() को पब्लिक बनाते हैं। यह फ़ंक्शन चर 'value' को पैरामीटर के रूप में प्राप्त करता है, जिसका डेटा प्रकार पूर्णांक है। हम क्लास में 'value' नामक पूर्णांक डेटा प्रकार के चर को भी इनिशियलाइज़ करते हैं। यह चर भी पब्लिक सेट है। अगली पंक्ति setValue() नामक एक और फ़ंक्शन को कॉल करती है। इस फ़ंक्शन में पूर्णांक डेटा प्रकार का चर 'value' पैरामीटर के रूप में प्रदान किया जाता है। हम इनपुट्स में से एक के रूप में आपूर्ति किए गए मान को बढ़ाते हैं।

अगले चरण में, हम 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 और अन्य प्रौद्योगिकी संबंधित सामग्री के लिए लिखती हूं।

  1. Tkinter विंडो को विशिष्ट स्थान पर कैसे खोलें? Tkinter विंडो को विशिष्ट स्थान पर कैसे खोलें?

    Tkinter विंडो को ज्योमेट्री मैनेजर का उपयोग करके कॉन्फिगर किया जा सकता है। जब हम geometry(width x height + position_right + position_left) मेथड का उपयोग करके मेन विंडो को निर्दिष्ट करते हैं, तो हम आमतौर पर विंडो को एक विशेष स्थान पर खोलने में सक्षम करते हैं। उदाहरण # आवश्यक लाइब्रेरी आयात करें from

  1. Android में फैक्ट्री मेथड से इम्यूटेबल लिस्ट कैसे बनाएं? Android में फैक्ट्री मेथड से इम्यूटेबल लिस्ट कैसे बनाएं?

    Android में Collections.unmodifiableList() का उपयोग करके इम्यूटेबल लिस्ट बनाएं यह उदाहरण दर्शाता है कि Android में फैक्ट्री मेथड का उपयोग करके इम्यूटेबल (अपरिवर्तनीय) लिस्ट कैसे बनाई जाती है। इम्यूटेबल लिस्ट बनाने के बाद संशोधित नहीं की जा सकती। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File →

  1. HTML और CSS से रिस्पॉन्सिव नेविगेशन मेनू (लॉगिन फॉर्म के साथ) कैसे बनाएं? HTML और CSS से रिस्पॉन्सिव नेविगेशन मेनू (लॉगिन फॉर्म के साथ) कैसे बनाएं?

    रिस्पॉन्सिव नेविगेशन बार में लिंक और दाईं ओर एक लॉगिन फॉर्म होता है। मोबाइल पर (<977px) लिंक स्टैक हो जाते हैं और फॉर्म फुल-विड्थ हो जाता है जिसमें बॉटम बॉर्डर इनपुट होते हैं। उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport con