errors porting C++ templates from GCC to Visual C++ -
जीसीसी में निम्नलिखित संकलन:
cvec.hpp:
टेम्पलेट & lt; कक्षा T & gt; वर्ग सीवीसी: सार्वजनिक डेक & lt; T & gt; {क्लास डेक & lt; T & gt; :: इटरेटर खोज (टी); };
cvec.cpp:
टेम्प्लेट & lt; वर्ग T & gt; क्लास डेक एंड टीटीसी: :: इटरेटर सीवीसी & lt; T & gt; :: खोजें (टी तत्व) {}
दृश्य सी ++ में, प्राप्त करें:
त्रुटि C2242 "टाइप किए गए नाम क्लास / स्ट्रेट / यूनियन का अनुसरण नहीं कर सकता।
मैंने "टाइप" नाम के लिए हैडर फ़ाइल में "क्लास" को बदल दिया है, लेकिन त्रुटि प्राप्त करने के लिए C3860 - टेम्पलेट तर्क सूची में टेम्प्लेट परम सूची में प्रयुक्त क्रम में पैरामीटर सूचीबद्ध होना चाहिए। इस मामले में केवल एक पैरामीटर है, टी। जब तक कम्पाइलर खोज (टी तत्व) के बारे में भ्रमित नहीं होता है?
वर्ग डेक & lt; T & gt; :: इटरेटर खोज (टी);
आप घोषणा नहीं कर रहे हैं एक वर्ग। typename
कीवर्ड यहां मान्य होगा, लेकिन वर्ग
कोई मतलब नहीं है।
और .cpp फ़ाइल में भी यही सच है: < / P>
टेम्पलेट & lt; class T & gt; टाइपनाम डेक & lt; T & gt; :: iterator cvec & lt; T & gt; :: खोजें (टी तत्व)
सही है, वर्ग
नहीं है।
इसके अलावा, यह वास्तविक है जैसे लगता है कि आप क्या करने की कोशिश कर रहे हैं यह एक भयानक विचार है std :: deque
पहले से एक ढूंढें
फ़ंक्शन है। यह काम करता हैं। यह सही है। यह कुशल है इसे पुनर्विन्यास करने की कोई आवश्यकता नहीं है।
मानक पुस्तकालय कंटेनर भी तैयार नहीं किए जाते हैं। वे वर्चुअल डिस्ट्रक्टर्स नहीं करते हैं।
आप सभी को प्राप्त कर रहे हैं (संकलन त्रुटियों के अलावा) यह है कि आप एक छोटी गाड़ी, कम कुशल कंटेनर वर्ग के साथ समाप्त होने जा रहे हैं जो अन्य सी + + प्रोग्रामर क्योंकि यह मुहावरेदार अंतरफलक का उपयोग नहीं करता है।
Comments
Post a Comment