सी में फ़ंक्शन रिटर्न प्रकार के आधार पर टेम्पलेट कटौती
सी में, जेनेरिक को तुरंत चालू करने वाले कोड को सरल बनाने के लिए टेम्पलेट कटौती का उपयोग करना वांछनीय हो सकता है फ़ंक्शन के तर्कों के डेटा प्रकारों के आधार पर फ़ंक्शन। निम्नलिखित उदाहरण पर विचार करें:
GCPtr ptr1 = GC::Allocate();
GCPtr ptr2 = GC::Allocate();
जेनेरिक प्रकार के मापदंडों को स्पष्ट रूप से निर्दिष्ट करने के बजाय, लक्ष्य GC::Alocate() फ़ंक्शन के रिटर्न प्रकार का उपयोग करके इस कटौती को प्राप्त करना है। हालाँकि, C, रिटर्न प्रकार के आधार पर प्रकार की कटौती की अनुमति नहीं देता है।
class GC
{
public:
template
static GCPtr Allocate();
};
रिटर्न प्रकार सामान्य होने के बावजूद, कंपाइलर को GC::Alocate() फ़ंक्शन को इंस्टेंट करते समय टेम्पलेट प्रकार के पैरामीटर और के स्पष्ट विनिर्देश की आवश्यकता होती है।
इस सीमा को कम करने के लिए, एक सहायक फ़ंक्शन पेश किया जा सकता है:
template
void Allocate(GCPtr& p) {
p = GC::Allocate();
}
इस फ़ंक्शन का उपयोग करके, मूल लक्ष्य निम्नानुसार प्राप्त किया जा सकता है:
GCPtr p;
Allocate(p);
auto p = GC::Alocate(); //p GCPtrप्रकार का है
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3