generics - C++ template function with vector -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
मेरे पास निम्न पंक्तियाँ हैं कोड और संकलन त्रुटियाँ यह टेम्प्लेट फ़ंक्शन, या सी ++ जेनेटिक्स या कुछ और के बारे में मेरी गलत समझ होनी चाहिए I इसे इंगित करने के लिए अग्रिम धन्यवाद। <पूर्व>
#include & lt; iostream & gt; #include & lt; vector & gt; नेमस्पेस एसटीडी का उपयोग करना; टेम्पलेट & lt; typename T & gt; टी * खोज (वेक्टर & lt; T & gt; ve & vec, T मान) {वेक्टर & lt; T & gt; :: इटरेटर प्रथम = vec.begin (); वेक्टर & lt; T & gt; :: इटेटर अंतिम = vec.end (); के लिए (; पहले! = अंतिम; पहले ++) यदि (* पहले == मान) पहले लौट आए; वापसी 0; }
कंसोल में संकलित त्रुटियां
डीबग.cpp: फ़ंक्शन में "टी" * ढूंढें (std :: vector & lt; T, std :: आबंटक & lt; _CharT & gt; & gt; & amp ;, टी) एक ????: debug.cpp: 9: त्रुटि: अपेक्षित `; ' पहले से पहले Debug.cpp: 10: त्रुटि: अनुमानित ';' इससे पहले Debug.cpp: 11: त्रुटि: एक पहले ??? इस स्कोप डीबग में घोषित नहीं किया गया था। सीपीपी: 11: त्रुटि: एक '' अंतिम '' इस स्कोप में घोषित नहीं किया गया
आपको
typename vector & lt; T & gt का उपयोग करने की आवश्यकता है ; :: इटरेटर पहले और पिछले के समान। अन्यथा कंपाइलर को घोषणा अस्पष्ट लगता है, क्योंकि यह महसूस नहीं होता है कि
vector & lt; T & gt; :: iterator एक प्रकार है यह एक सदस्य समारोह या कुछ और हो सकता है तकनीकी रूप से उन्हें
आश्रित टाइप नामों कहा जाता है (क्योंकि वे टेम्पलेट प्रकार
T पर निर्भर करते हैं। हर बार जब आप पर निर्भर प्रकार का उपयोग करें
typename सिर दर्द से बचने के लिए यह अधिक जानकारी के लिए उदाहरण देखें।
Comments
Post a Comment