स्टोरेज क्लास तक पहुंच बनाने की कोशिश करने के बाद थोड़ा आसान, मैं एक ऐसी स्थिति में समाप्त हुआ जिस पर मुझे बहुत ज्ञान नहीं है। और, उन लोगों को ढूंढना जो मेरे जैसा ही करने की कोशिश कर रहे हैं, आसान नहीं है।सी ++ ऐरे सब्सक्रिप्शन ऑपरेटर टेम्पलेट
जो मैं करने की कोशिश कर रहा हूं, उसमें एक कक्षा है जो आंतरिक रूप से स्ट्रिंग के रूप में मानों की एक सरणी संग्रहीत करती है, लेकिन उपयोगकर्ता के अंत से सरल प्रकार का कास्टिंग करने की अनुमति देती है। जो मैंने करने की योजना बनाई थी वह सरणी सबस्क्रिप्ट ऑपरेटर का उपयोग किसी भी प्रकार के टेम्पलेट के माध्यम से निर्दिष्ट करने के लिए करने के लिए करती है। हालांकि, यह अभ्यास में काम करने से काफी बेहतर लगता है। कार्य के बारे में आपको यह बताने के लिए कि मैं क्या कर रहा हूं, इसका एक सरल उदाहरण यहां दिया गया है।
class StringList
{
public:
template <typename T>
T operator[](const int i)
}
वहां से, मैं कुछ विशिष्ट टेम्पलेट्स को परिभाषित करता हूं, और यदि आवश्यक हो तो कोई भी उपयोगकर्ता आसानी से परिभाषित कर सकता है। लेकिन, इसके साथ सबसे बड़ी समस्या यह है कि मुझे नहीं पता कि सबस्क्रिप्ट ऑपरेटर को टेम्पलेट के साथ कैसे कॉल करें। सबसे पहले मैंने निम्नलिखित मान लिया (जो स्पष्ट रूप से सही नहीं है), यह मानते हुए कि यह टेम्पलेट विधि को कॉल करने के मानक तरीके के समान है।
StringList list;
T var = list<T>[0];
क्या कोई भी सबस्क्रिप्ट ऑपरेटर को टेम्पलेट के रूप में कॉल करने का उचित तरीका जानता है? या, क्या मुझे बस ऐसा करने से बचना चाहिए, और नामित विधि का उपयोग करना चाहिए?
मैं इस उद्देश्य के लिए ओवरलोडिंग 'ऑपरेटर []' के खिलाफ सावधानी बरतता हूं क्योंकि अधिभारित ऑपरेटरों का सबसे अच्छा उपयोग तब किया जाता है जब वे वाक्य रचनात्मक रूप से सार्थक होते हैं। आप सामान्य रूप से 'सूची [0]' जैसी चीज़ नहीं लिखते हैं, और मुझे लगता है कि अतिरिक्त बौद्धिक उपरि इसके लायक नहीं है। क्यों न केवल 'get' विधि टेम्पलेट बनाएं और' list.get (0) 'पर कॉल करें? –
templatetypedef
@templatetypedef मैं पूरी तरह से सहमत हूं। मैं शायद नामित फ़ंक्शन के साथ चिपकने की संभावना से अधिक था, क्योंकि मुझे यह भी समझ में नहीं आता कि आप इस तरह के टेम्पलेट को कैसे लिखेंगे। लेकिन, मुझे यह जानने के लिए उत्सुकता है कि यह कैसे लिखा जाएगा, इस पर ध्यान दिए बिना कि मुझे कभी इसका उपयोग करने की आवश्यकता है या नहीं। – TheCodeBroski