c++ - Return vector element reference by [] operator -
मेरे पास एक वर्ग या स्ट्रेट है, कहते हैं, कंटेनर , निम्न संरचना के साथ: जहां प्रकार एक मानक प्रकार या कस्टम परिभाषित क्लास या स्ट्रेट हो सकता है। यह संरचना इस तरह काम करती है: के तत्वों पर पुनरावृत्त एक फ़ंक्शन कॉल करता है। ; V [0] - & gt; फ़ंक्शन () जहां फ़ंक्शन प्रकार वर्ग का सदस्य है; यह उम्मीद की तरह काम करता है; हालांकि, यह मेरे द्वारा परिभाषित के रूप में [] ऑपरेटर से के लिए सरलीकृत किया जा सकता है < Em> होता निहित कक्षा में एक सूचक वापस लौटाएगा और कंटेनर ही नहीं, लेकिन कंपाइलर अभी भी शिकायत करता है कि कंटेनर वर्ग को "फ़ंक्शन" नामक कोई सदस्य नहीं है यह एक बड़ा मुद्दा नहीं है, जैसा कि एक अलग सिंटैक्स से आसानी से बचा जा सकता है, लेकिन मुझे लगता है कि मेरे पास कुछ मौलिक गलतफहमी है कि संकेतक और संदर्भ कैसे काम करते हैं। [ऑपरेटर को यहाँ परिभाषित करने का एक उचित तरीका क्या होगा और मुझे क्या याद आ रहा है? अग्रिम में आपका धन्यवाद संपादित करें: मैंने अपना वास्तविक कोड प्रदर्शित करने के लिए प्रश्न संपादित किया है आपका हाँ कंपाइलर कहता है कि कंटेनर के पास कोई सदस्य फ़ंक्शन नहीं है, प्रकार नहीं। क्या आपने आउटपुट: कंटेनर :: फ़ंक्शन () अपडेट यहां एक सूचक का उपयोग करने का एक उदाहरण है। बेशक, आपको इस तरह एक कच्चे पॉइंटर का इस्तेमाल कभी नहीं करना चाहिए। आप इसके बजाय इस्तेमाल कर सकते हैं या आप अपनी मेमोरी को किसी वर्ग के लिए लपेट सकते हैं।
टेम्पलेट & lt; typename type & gt; संरचना कंटेनर {वेक्टर & lt; टाइप करें * & gt; v; ... कार्य ... प्रकार * ऑपरेटर [] (इंट आई) {// इस रिटर्न के बारे में निश्चित नहीं है (वी) [i]; }};
< कोड> कंटेनर & LT; प्रकार & gt; * सी (10); ग & gt; समारोह (); // यदि वेक्टर के अलग-अलग तत्वों को एक्सेस करना चाहते हैं तो मैं
c-> gt पर कॉल कर सकता / सकती हूं; v
सी [0] -> फ़ंक्शन ()
ऑपरेटर [] ठीक लगता है ऐसा लगता है कि आप अपने स्ट्रैट नाम के बाद एक अर्ध-बृहदान्त्र गायब हो रहे हैं।
कंटेनर के लिए एक फ़ंक्शन परिभाषित किया है? < p> यहां एक कंपाइलिंग है, काम कर रहे उदाहरण:
#include & lt; iostream & gt; #include & lt; vector & gt; संरचना एक {शून्य फ़ंक्शन () {std :: cout & lt; & lt; "ए :: फ़ंक्शन ()" "\ n"; }}; टेम्पलेट & lt; typename प्रकार & gt; संरचना कंटेनर {std :: vector & lt; type * & gt; v; शून्य फ़ंक्शन () {std :: cout & lt; & lt; "कंटेनर :: फ़ंक्शन ()" "\ n"; } प्रकार * ऑपरेटर [] (int i) {वापसी (वी) [i]; }}; Int मुख्य (शून्य) {ए एक; कंटेनर & lt; A & gt; सी ; सी। फंक्शन (); c.v.push_back (& amp; a); सी [0] - & gt; फ़ंक्शन (); वापसी 0; }
ए :: फ़ंक्शन ()
int main (शून्य) {a a; कंटेनर & lt; A & gt; * पीसी = नया कंटेनर & lt; A & gt; ; पीसी-> फ़ंक्शन (); pC- & gt; v.push_back (& amp; a); (* पीसी) [0] - & gt; फ़ंक्शन (); पीसी हटाएं; वापसी 0; }
Comments
Post a Comment