वहाँ वैश्विक समारोह (सिर्फ उदाहरण) है:ओवरलोडेड फ़ंक्शन को हटा रहा है। सी ++ 11। अतिभारित कॉल ... अस्पष्ट है
void func(int i)
{
std::cout << i + 100 << std::endl;
}
मुझे लगता है कि चार तर्क के साथ इस कार्यप्रणाली को कॉल किसी भी मतलब नहीं है तो मैं हटाने का प्रयोग करें:
void func(char) = delete;
तो मैं उम्मीद करते हैं कि निम्न कॉल संभव हो जाना चाहिए:
func(1);
func(3.1);
func(true);
और चार तर्क के साथ फोन forbiden किया जाना चाहिए:
func('a');
लेकिन यह सच नहीं है। जब func('a')
बुला मैं अपेक्षा के अनुरूप मिल:
error: use of deleted function ‘void func(char)’
लेकिन func(2.3)
बुला दौरान मैं:
error: call of overloaded ‘func(double)’ is ambiguous
मैं यह त्रुटि क्यों मिलता है? चार तर्कों के साथ फ़ंक्शन को हटाए बिना डबल को int और func (int) में परिवर्तित किया गया था, अब इसे क्यों प्रतिबंधित किया गया है?
_ "मुझे यह त्रुटि क्यों मिलती है?" _ आप जानते हैं कि 'char' को स्वचालित रूप से' int' में परिवर्तित किया जा सकता है और बदले में 'डबल' हो सकता है? – user0042
आपके द्वारा ** संपादित किए गए सब कुछ ** संपादित ** आपके प्रश्न का उत्तर जैसा लगता है। यदि यह आपका उत्तर है, तो कृपया इसे प्रश्न से हटा दें और * इसे उत्तर के रूप में पोस्ट करें *। यदि, ऐसा लगता है, तो आप बस एक मौजूदा को प्रतिबिंबित कर रहे हैं, डुप्लिकेट उत्तर पोस्ट न करें; बस इसे अपने प्रश्न से हटा दें। –