मेरे पास निम्नलिखित वर्ग हैं:
टेम्पलेट & lt; size_t आकार & gt; वर्ग अरये {सार्वजनिक: आरे (इंट इनपुट []) {के लिए (इंट आई = 0; आई & lt; आकार; i ++) अरये [i] = इनपुट [i]; } इंट आरे [आकार]; }; मैं इस वर्ग के लिए कास्ट-टू-रेफरेंस-टू-सरणी ऑपरेटर कैसे लिखूं, ताकि निम्न कार्य हो सकें:
int adad [3] = {1,2,3}; Araye के & lt; 3 & gt; araye (ADAD); इंट (और संदर्भ) [3] = अरये;
टेम्पलेट & lt; size_t आकार & gt; क्लास अरये {सार्वजनिक: टाइपिफेफ इंट (& amp; array_ref) [आकार]; ऑपरेटर array_ref () {वापसी आर्ये; } // ... या पहचान के साथ (धन्यवाद जोहान्स):
ऑपरेटर टाइपनाम की पहचान & lt; int [आकार] & Gt; :: प्रकार & amp; () {वापसी आर्य; } उस उदाहरण के साथ काम करता है, लेकिन मैं इसके बजाय निम्नलिखित घोषणा को पसंद करता हूं:
Araye & lt; 3> gt; :: array_ref संदर्भ = araye; आम तौर पर इस के लिए कोई आवश्यकता नहीं होनी चाहिए, हालांकि सबस्क्रिप्टिंग ऑपरेटर को सबसे ज़रूरी जरूरतों को कवर करना चाहिए:
int & amp; ऑपरेटर [] (size_t i) {वापसी araye [i]; } ध्यान दें कि अगर आप अपनी कक्षा को एक समग्र रूप से सीमित करने के साथ ठीक कर रहे हैं, तो आप इसके बजाय अपने नमूने को कम कर सकते हैं:
template & lt; आकार_टी आकार & gt; स्ट्रेट अरये {इंट आर्ये [आकार]; टाइपएफ़एफ़ इंट (& array_ref) [आकार]; ऑपरेटर array_ref () {वापसी आर्ये; }}; Araye के & lt; 3 & gt; अरये = {1,2,3}; आर्ये & lt; 3 & gt; :: array_ref संदर्भ = अरये;
Comments
Post a Comment