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

C++ में Enable_if का उपयोग करके सशर्त सदस्य फ़ंक्शन ओवरलोड कैसे कार्यान्वित करें?

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

How to Implement Conditional Member Function Overloads Using enable_if in C  ?

विभिन्न Enable_if शर्तों के साथ एक सदस्य फ़ंक्शन का चयन करना

C में, Enable_if एक उपकरण है जिसका उपयोग कुछ कोड को सशर्त रूप से सक्षम या अक्षम करने के लिए किया जाता है। एक टेम्पलेट तर्क विशिष्ट मानदंडों को पूरा करता है। यह तब उपयोगी हो सकता है जब आप किसी वर्ग या फ़ंक्शन के व्यवहार को उसके टेम्पलेट मापदंडों के आधार पर अनुकूलित करना चाहते हैं।

दिए गए उदाहरण में, लक्ष्य एक सदस्य फ़ंक्शन MyFunction बनाना है जो टेम्पलेट के आधार पर अलग-अलग व्यवहार करता है पैरामीटर T एक पूर्णांक है या नहीं. इच्छित कार्यान्वयन MyFunction के दो ओवरलोड का उपयोग करना है, एक T = int के लिए और एक T != int के लिए।

इसे प्राप्त करने का एक तरीका Enable_if के माध्यम से है, जैसा कि नीचे दिए गए कोड में दिखाया गया है:

template
struct Point {
  void MyFunction(
    typename std::enable_if<:is_same int>::value, T >::type* = 0) {
    std::cout ::value, float >::type* = 0) {
    std::cout 

हालाँकि, इस कोड के परिणामस्वरूप Enable_if के गलत उपयोग के कारण संकलन त्रुटियाँ होंगी। सी में, टेम्पलेट तर्कों का प्रतिस्थापन ओवरलोड रिज़ॉल्यूशन के दौरान होता है। इस मामले में, कोई प्रतिस्थापन नहीं हो रहा है क्योंकि टी का प्रकार सदस्य फ़ंक्शन इंस्टेंटेशन के समय ज्ञात होता है।

इस समस्या को ठीक करने के लिए, एक डमी टेम्पलेट पैरामीटर पेश किया जा सकता है और टी को डिफ़ॉल्ट किया जा सकता है, जिससे एसएफआईएनएई की अनुमति मिलती है (प्रतिस्थापन विफलता कोई त्रुटि नहीं है) ठीक से काम करने के लिए:

template
struct Point {
  template
  typename std::enable_if<:is_same int>::value>::type MyFunction() {
    std::cout 
  typename std::enable_if<:is_same float>::value>::type MyFunction() {
    std::cout 

यह दृष्टिकोण सुनिश्चित करता है कि टी के मान के आधार पर MyFunction का सही संस्करण चुना गया है।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3