मेरे पास टेम्पलेट फ़ंक्शन "तुलना" नीचे परिभाषित किया गया है।टेम्पलेट तत्काल त्रुटि
#include<iostream>
using namespace std;
template<typename T>
void compare(const T&a, const T& b)
{
cout<<"Inside compare"<<endl;
}
main()
{
compare("aa","bb");
compare("aa","bbbb");
}
जब मैं उसी लंबाई के स्ट्रिंग अक्षर के साथ तुलना करता हूं, तो संकलक शिकायत नहीं करता है। जब मैं इसे अलग-अलग लंबाई के अक्षर के साथ करता हूं, तो यह कहता है "त्रुटि: तुलना करने के लिए कॉल के लिए कोई मिलान करने वाला फ़ंक्शन नहीं है (कॉन्स char [3], कॉन्स char [5])"
मैं उलझन में हूं क्योंकि तुलना फ़ंक्शन को तुरंत चालू किया जाना चाहिए वर्ण सरणी के बजाय चरित्र सूचक। सचमुच पिक्चर को पेंच करने के लिए स्ट्रिंग नहीं करना चाहिए?
@Greg, वर्तमान घोषणा के साथ समस्या क्या है? – chappar
लिखित रूप में आपकी घोषणा की आवश्यकता है कि फ़ंक्शन तुलना दो पैरामीटर लेती है जो बिल्कुल वही प्रकार हैं। "कॉन्स चार [3]" और "कॉन्स चार [5]" एक ही प्रकार के नहीं हैं। –
आपके मौजूदा कोड में, "तुलना" शून्य तुलना की तरह कुछ मूल्यांकन करेगा (char a [2], char b [4])। संदर्भों के बजाय पॉइंटर्स का उपयोग करना मतलब है कि टी को दो अलग-अलग आकार के सरणी (जो विभिन्न प्रकार हैं) के बजाय सुरक्षित रूप से "चार" का मूल्यांकन किया जा सकता है। – Justicle