C++ 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' संकलन त्रुटि का समाधान
<पी>
<पी> कॉल के लिए कोई मिलान फ़ंक्शन नहीं का अर्थ है जब हम कुछ निश्चित फ़ंक्शन कॉल कर रहे हैं, लेकिन उस फ़ंक्शन की आईडी परिभाषित फ़ंक्शन के तर्क से मेल नहीं खा रही है। इसलिए हमें C++ में 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' त्रुटि प्राप्त होती है। जब भी कंपाइलर बताता है कि कोई मिलान विधियां नहीं हैं, तो यह आम तौर पर इंगित करता है कि कंपाइलर ने उसी नाम से एक विधि की पहचान की है जैसे हमने फ़ंक्शन को पैरामीटर दिए थे। <पी> इसलिए जब हम फ़ंक्शन में गलत प्रकार की निर्दिष्ट विधि या पैरामीटर के अनुचित सेट को पास करना जारी रखते हैं। एक फ़ंक्शन परिभाषा कंपाइलर को विधि का नाम और साथ ही इसे कैसे लागू करना है यह निर्दिष्ट करती है। फ़ंक्शन की संपूर्ण सामग्री स्पष्ट रूप से घोषित की जा रही है। इस लेख में, हम इस बारे में बात करेंगे कि C++ में 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' त्रुटि कैसे दिखाई देती है। कक्षा के ऑब्जेक्ट का उपयोग करें
<पी> इस परिदृश्य में, कॉल के दौरान फ़ंक्शन पैरामीटर मेल नहीं खा रहा है, इसलिए हम उन पॉइंटर्स को पास करने का प्रयास करेंगे जहां संदर्भों की आवश्यकता है और फ़ंक्शन कॉल में विभिन्न वर्ग संदर्भ प्रकारों का उपयोग करेंगे। जब भी हम फ़ंक्शन का आह्वान करते हैं लेकिन तर्क की फ़ंक्शन परिभाषा का मिलान नहीं किया जा रहा है, तो 'C++ पर कॉल के लिए कोई मिलान फ़ंक्शन नहीं' त्रुटि सामने आती है। <पी> अब हमें त्रुटि ठीक करनी है; इस प्रयोजन के लिए, हम केवल फ़ंक्शन की परिभाषा के दौरान उपयुक्त मिलान पैरामीटर प्रदान करते हैं। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है। <पी>
<पी> कोड की शुरुआत में, हम लाइब्रेरी को शामिल करने जा रहे हैं, जिसका उपयोग इनपुट और आउटपुट कार्यात्मकताओं के लिए किया जाता है। हम एक मानक नामस्थान का भी उपयोग करते हैं। फिर हमने क्लास को 'ए' नाम से आरंभ किया और हमने फ़ंक्शन setValue() को सार्वजनिक निर्दिष्ट किया। हम इस फ़ंक्शन में पूर्णांक के डेटा प्रकार के साथ मान के पैरामीटर को पास कर रहे हैं। हमने उस वर्ग का एक वेरिएबल 'मान' भी प्रारंभ किया है जिसमें एक पूर्णांक डेटा प्रकार है। <पी> अगली पंक्ति में, हम एक अन्य फ़ंक्शन setValue() का आह्वान करते हैं। यह विधि चर 'मूल्य' को अपने तर्क के रूप में रखती है। हम उस मान में वृद्धि करते हैं जिसे इसके तर्कों के रूप में पारित किया गया था। फिर हम मुख्य() फ़ंक्शन को कॉल करते हैं, और हमें इसके तर्क के रूप में पूर्णांक डेटा प्रकार वाला 'argc' और कैरेक्टर डेटा प्रकार का 'argv' पॉइंटर दिया जाता है। 'Argc' नंबर है। ऑपरेटिंग सिस्टम से कोड में प्रदान किए गए पैरामीटर। 'Argv' पैरामीटरों का संग्रह है। <पी> अब हम वर्ग 'ए' का एक ऑब्जेक्ट 'ओबीजे' बनाते हैं। हम विधि सेटवैल्यू () फ़ंक्शन को लागू करते हैं। 'ओब्जेक्ट' को इसके तर्क के रूप में पारित किया गया है। लेकिन हमने ऑब्जेक्ट को क्लास से नहीं जोड़ा। इसीलिए जब हम फ़ंक्शन setValue() को कॉल करते हैं, तो यह एक त्रुटि देता है क्योंकि हमारे पास वह क्लास नहीं है जहां हम setValue() फ़ंक्शन को लागू करते हैं। उपरोक्त कोड में, हम setValue() फ़ंक्शन कॉलिंग तर्क के भीतर एक क्लास ऑब्जेक्ट पास कर रहे हैं, लेकिन यदि हम setValue() फ़ंक्शन परिभाषा में जांच करते हैं, तो हम पासिंग तर्क मान को पूर्णांक के रूप में मानते हैं। कोड को समाप्त करने के लिए, हमने 'रिटर्न 0' कमांड का उपयोग किया। यहां ऊपर बताए गए कोड के आउटपुट को सत्यापित किया जा सकता है। <पी>
<पी> उपर्युक्त कोड को निष्पादित करने के बाद हमें 'ए पर कॉल के लिए कोई मिलान फ़ंक्शन नहीं' त्रुटि प्राप्त होती है। इस त्रुटि का समाधान कैसे करें?
<पी> विधि कॉल के दौरान इस त्रुटि को ठीक करने के लिए, हमें फ़ंक्शन के लिए पर्याप्त संगत पैरामीटर प्रदान करना होगा। इस त्रुटि को हल करने का दूसरा तरीका यह है कि अलग-अलग अतिभारित कार्यों के अलग-अलग पैरामीटर हों। यहां हम केवल फ़ंक्शन मुख्य() के तर्क को संशोधित करते हैं। इस प्रकार 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' से C++ त्रुटि हटा दी जाएगी। कोड, इसके विस्तृत विवरण के साथ, नीचे देखा जा सकता है। <पी>
<पी> मानक नामस्थान का उपयोग करने के बाद, हम हेडर फ़ाइल प्रस्तुत करते हैं। हमने 'ए' नामक एक वर्ग का निर्माण किया और इसके फ़ंक्शन setValue() को सार्वजनिक कर दिया। यह फ़ंक्शन एक पैरामीटर के रूप में वेरिएबल 'मान' प्राप्त करता है, जिसमें डेटा प्रकार पूर्णांक होता है। हमने कक्षा में 'वैल्यू' नामक एक पूर्णांक डेटा प्रकार वैरिएबल भी प्रारंभ किया है। यह वेरिएबल भी सार्वजनिक सेट है। अगली पंक्ति setValue() नामक एक अन्य फ़ंक्शन को कॉल करती है। डेटा प्रकार पूर्णांक वाला वेरिएबल 'मान' इस फ़ंक्शन में एक पैरामीटर के रूप में प्रदान किया गया है। हम उस मान को बढ़ाते हैं जो इनपुटमें से एक के रूप में प्रदान किया गया था। पी> <पी> अगले चरण में, हम मुख्य() विधि को लागू करते हैं। मुख्य() फ़ंक्शन के भीतर, हम इसके तर्क के रूप में पूर्णांक डेटा प्रकार का 'argc' और वर्ण डेटा प्रकार का 'argv' प्रदान करेंगे। 'Argc' प्रोग्राम में ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए मापदंडों की संख्या दिखाता है। 'Argv' एक पैरामीटर संग्रह है। अब हम वर्ग 'ए' का एक ऑब्जेक्ट बनाएंगे जिसे 'ओबीजे' कहा जाएगा। हमने वेरिएबल 'वैल्यू' को पूर्णांक डेटा प्रकार के साथ आरंभ किया है। हमने ऑब्जेक्ट की setValue() विधि का उपयोग किया है और 'मान' को इस फ़ंक्शन के पैरामीटर के रूप में सेट किया है। <पी> अंत में, हम प्रोग्राम को बंद करने के लिए 'रिटर्न 0' जोड़ते हैं। याद रखें कि हमें मुख्य() फ़ंक्शन में समान डेटा प्रकार के फ़ंक्शन और उनके तर्क दर्ज करने होंगे। फिर हमने उस फ़ंक्शन को उसके ऑब्जेक्ट में पास कर दिया है और उसे वापस कर दिया है। यहां ऊपर बताए गए कोड के आउटपुट को सत्यापित किया जा सकता है। <पी>
निष्कर्ष
<पी> इस लेख में, हमने 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' त्रुटि प्राप्त करने के कारणों और इसे कैसे हल किया जाए, इसका पता लगाया है। जब भी हमें यह त्रुटि प्राप्त होती है, तो हमें आवश्यक विधियों के मापदंडों के साथ-साथ उनके डेटा प्रकार की भी जांच करनी होती है। फ़ंक्शन तर्कों में तर्क प्रदान करते समय हम गलतियाँ करते हैं। हम फ़ंक्शन के मापदंडों का बेमेल मिलान करते हैं। हमें निर्दिष्ट विधि से मिलान किए गए पैरामीटर देने की आवश्यकता हो सकती है। या हमें उसी डेटा प्रकार के साथ एक नया फ़ंक्शन जोड़ना होगा। प्रोग्राम में फ़ंक्शन के लिए उपयुक्त पैरामीटर की जांच करने और जोड़ने के बाद, त्रुटि, 'कॉल के लिए कोई मिलान फ़ंक्शन नहीं' का समाधान किया जाएगा। लेखक के बारे में
<पी>
कलसूम बीबी
<पी> नमस्ते, मैं एक स्वतंत्र लेखक हूं और आमतौर पर लिनक्स और अन्य प्रौद्योगिकी से संबंधित सामग्री के लिए लिखता हूं