यह कोड मान्य क्यों नहीं है?
#include & lt; vector & gt; टेम्पलेट & lt; typename T & gt; वर्ग ए {सार्वजनिक: ए () {v.clear (); } Std :: vector & lt; ए & lt; T & gt; * & Gt; :: const_iterator शुरू () {वापसी v.begin (); } निजी: std :: vector & lt; ए & lt; T & gt; * & Gt; v; }; जीसीसी निम्नलिखित त्रुटियों की रिपोर्ट करता है:
test.cpp: 8: त्रुटि: प्रकार 'std :: वेक्टर & lt; A & lt; T & gt; *, std :: आबंटक & lt; ए & lt; T & gt; * & gt; & Gt; ' प्रकार 'ए एंड एलटी; टी & gt;' से प्राप्त नहीं है Test.cpp: 8: त्रुटि: अपेक्षित ';' 'शुरू' से पहले test.cpp: 12: त्रुटि: अपेक्षित ``; 'निजी' से पहले क्या गलत है? इसे ठीक कैसे करें?
इस पंक्ति में, आप typename कीवर्ड:
std :: vector & lt; ए & lt; T & gt; * & Gt; :: const_iterator शुरू () { आपको इसकी आवश्यकता है:
typename std :: vector & lt; a & lt; T & gt; * & Gt; :: const_iterator शुरू () { यह इसलिए क्योंकि std :: vector & lt; a & lt; T & gt; * & Gt; वर्ग के टेम्पलेट ( ए ) के टेम्पलेट पैरामीटर ( T ) पर निर्भर है। टेम्पलेट के सही पार्सिंग को सक्षम करने के लिए बिना किसी अन्य टेम्पलेट के संभावित विशेषज्ञताओं के बारे में कोई धारणाएं करने के लिए, भाषा नियमों के लिए आपको यह संकेत देने की आवश्यकता है कि कौन से निर्भर नाम typename कीवर्ड का उपयोग करके प्रकारों को निरूपित करता है।
Comments
Post a Comment