"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > टेम्प्लेट किए गए फ़ंक्शन से सदस्य फ़ंक्शन टेम्प्लेट को लागू करने के लिए `टेम्पलेट` कीवर्ड की आवश्यकता क्यों होती है?

टेम्प्लेट किए गए फ़ंक्शन से सदस्य फ़ंक्शन टेम्प्लेट को लागू करने के लिए `टेम्पलेट` कीवर्ड की आवश्यकता क्यों होती है?

2024-11-06 को प्रकाशित
ब्राउज़ करें:573

Why Does Invoking a Member Function Template from a Templated Function Require the `template` Keyword?

टेम्पलेटेड फ़ंक्शन से टेम्प्लेटेड क्लास इनवोकेशन का सदस्य फ़ंक्शन

प्रदान किए गए कोड स्निपेट में, किसी अन्य टेम्प्लेट के भीतर से एक सदस्य फ़ंक्शन टेम्प्लेट को इनवोकेशन करने का परिणाम होता है एक संकलन त्रुटि. विशेष रूप से, कोड g() के भीतर से A::f() को कॉल करने का प्रयास करता है। हालाँकि, यह सिंटैक्स समस्या के कारण विफल हो जाता है।

इसे हल करने के लिए, सदस्य फ़ंक्शन आमंत्रण से पहले टेम्पलेट कीवर्ड को स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए। ऐसा इसलिए है क्योंकि C '03 मानक 14.2/4 के अनुसार, जब किसी सदस्य टेम्पलेट विशेषज्ञता का नाम पोस्टफ़िक्स-अभिव्यक्ति या योग्य-आईडी के बाद दिखाई देता है जो टेम्पलेट पैरामीटर पर निर्भर करता है, तो सदस्य टेम्पलेट नाम को टेम्पलेट कीवर्ड के साथ उपसर्ग किया जाना चाहिए .

इसलिए, निम्नलिखित कोड सही है:

template void g()
{
   A a;
   a.template f();  // Explicitly specify 'template' keyword
}

टेम्पलेट कीवर्ड जोड़कर, कंपाइलर सही ढंग से पहचान सकता है कि एफ ए क्लास टेम्पलेट का सदस्य टेम्पलेट है, और यह सफलतापूर्वक ए::एफ() को कॉल कर सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3