अंतर्निहित संदर्भ के लिए फ़ंक्शन पॉइंटर्स का उपयोग करना- टेम्प्लेट क्लास में "ग्रेटर दैन" ऑपरेटर (">") जैसे ऑपरेटरों में, सही प्रकार के ओवरलोड को निर्दिष्ट करना आवश्यक है। हालाँकि, यह चुनौतीपूर्ण हो सकता है।
सी बिल्ट-इन ऑपरेटर्स, जैसे कि अंकगणित और तार्किक ऑपरेटर, वास्तविक ऑपरेटर फ़ंक्शन नहीं हैं। इसके बजाय, उन्हें कंपाइलर द्वारा सीधे असेंबली निर्देशों में अनुवादित किया जाता है। इसलिए, उनके लिए फ़ंक्शन पॉइंटर्स प्राप्त करना संभव नहीं है। लेकिन वास्तविक कार्य नहीं हैं। वे टेम्पलेटेड ऑब्जेक्ट हैं जो अपने ऑपरेटर() फ़ंक्शन में अनुरूप ऑपरेटर को क्षय करते हैं।
template
class MyAction
{
public:
MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCpmpare)
: arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare_) {}
bool operator()()
{
if((fnCompare_)(arg0_,arg1_))
{
// Do this
}
else
{
// Do s.th. else
}
}
private:
ParamsType& arg0_;
ParamsType& arg1_;
FnCompareType& fnCompare_;
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3