सी 11: फ़ंक्शन अलियासिंग
सी में, किसी क्लास के लिए उपनाम बनाने के लिए कीवर्ड का उपयोग किया जा सकता है। हालाँकि, फ़ंक्शंस के लिए समान कार्यक्षमता सीधे उपलब्ध नहीं है। यह आलेख इस प्रश्न का पता लगाता है कि क्या फ़ंक्शन अलियासिंग संभव है और सही अग्रेषण का उपयोग करके एक समाधान प्रदान करता है।
उद्देश्य:
यह निर्धारित करने के लिए कि क्या किसी फ़ंक्शन के लिए उपनाम बनाना संभव है सी और, यदि ऐसा है, तो इसे पूरा करने के लिए सबसे साफ तरीका ढूंढें।
{
शून्य एफ();
}
हम फ़ंक्शन bar::f के लिए g नामक उपनाम बनाना चाहेंगे। हालाँकि, निम्नलिखित प्रयास के परिणामस्वरूप त्रुटि हुई:
using g = bar::f; // त्रुटि: नेमस्पेस 'बार' में 'f' किसी प्रकार का नाम नहीं देता है
namespace bar
{
void f();
}
फ़ंक्शन उपनाम बनाने के लिए, हम टेम्प्लेट और परफेक्ट फ़ॉरवर्डिंग के संयोजन का उपयोग कर सकते हैं . इसे कैसे प्राप्त किया जा सकता है इसका एक उदाहरण यहां दिया गया है:
using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
यह समाधान एक सामान्य टेम्पलेट फ़ंक्शन बनाकर काम करता है जो किसी भी संख्या में तर्क लेता है। फिर यह इन तर्कों को सही अग्रेषण का उपयोग करके मूल फ़ंक्शन f पर अग्रेषित करता है। यह सुनिश्चित करता है कि कॉल किए गए फ़ंक्शन को उनके मूल रूप में तर्क प्राप्त होते हैं, भले ही किसी भी प्रकार के रूपांतरण या पॉइंटर डीरेफ़रेंस को उपनाम पर लागू किया गया हो।
नोट:
यह समाधान ओवरलोडेड फ़ंक्शंस और फ़ंक्शन टेम्पलेट्स के लिए भी काम करता है, यह सुनिश्चित करता है कि दिए गए तर्कों के आधार पर सही फ़ंक्शन कॉल किया जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3