Saturday 15 May 2010

c++ - LNK2005 template function -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 13 उत्तर

मैं पहले निम्न फ़ंक्शंस को कार्यान्वित करता हूं उसी के रूप में। सीपीपी फ़ाइल (मुख्य) सब कुछ पूरी तरह से काम करता है लेकिन जब मैंने एक हेडर फाइल में उन्हें परिभाषित करने और उन्हें एक अलग .cpp फ़ाइल में लागू करने की कोशिश की तो मुझे कुछ समस्या मिली।

यह मेरा मूल कोड है:

  टेम्पलेट & lt ; वर्ग T & gt; // एक सिंगल कंटेनर डबल योग (कॉन्स्ट टी एंड सोर्स) के योग समारोह को कार्यान्वित करें {...} // नक्शा टेम्पलेट के लिए स्पष्ट विशेषज्ञता & lt; & gt; डबल राशि & lt; नक्शे & lt; स्ट्रिंग, डबल & gt; & gt; (कॉन्स्ट मैप & lt; स्ट्रिंग, डबल & gt; & amp; स्रोत) {...} टेम्पलेट & lt; class T & gt; // दो आवर्तक के लिए योग समारोह को दोहरे योग (const वर्ग T :: const_iterator और start, const वर्ग T :: const_iterator और end) के लिए कार्यान्वित करें {...} // मानचित्र के लिए स्पष्ट विशेषज्ञता (इरेरेटर के योग समारोह) टेम्पलेट & lt; & gt ; दोहरे योग & lt; नक्शे & lt; स्ट्रिंग, डबल & gt; & gt; (कॉन्स्ट मैप & lt; स्ट्रिंग, डबल & gt; :: const_iterator & amp; प्रारंभ, const नक्शा & lt; स्ट्रिंग, डबल & gt; :: const_iterator & amp; end) {...} void main () {.. ।}  

फिर मैं फ़ंक्शन के कार्यान्वयन को हटा देता हूं और उन्हें एक हेडर फ़ाइल में परिभाषित करता हूं:

  टेम्पलेट & lt; class T & gt; // एक सिंगल कन्टेनर डबल योग (कॉन्स्ट टी एंड सोर्स) के योग समारोह को लागू करें; // नक्शा टेम्पलेट के लिए स्पष्ट विशेषज्ञता & lt; & gt; डबल राशि & lt; नक्शे & lt; स्ट्रिंग, डबल & gt; & gt; (कॉन्स्ट मैप & lt; स्ट्रिंग, डबल & gt; & amp; स्रोत); टेम्पलेट & lt; कक्षा T & gt; // दो आवर्तक के लिए योग समारोह को दोहरे योग (कॉन्स्ट क्लास टी :: कॉन्स्टाइटरेटर एंड स्टार्ट, कॉन्स्ट क्लास टी :: कॉन्स्टिटरेटर एंड एंड) पर लागू करें; // मैप के लिए स्पेशलाइज्ड स्पेशलाइजेशन (थियेटर का योग समारोह) टेम्पलेट & lt; & gt; डबल राशि & lt; नक्शा & lt; स्ट्रिंग, डबल & gt; & gt; (कॉन्स्ट मैप & lt; स्ट्रिंग, डबल & gt; :: const_iterator & amp; प्रारंभ, const नक्शा & lt; स्ट्रिंग, डबल & gt; :: const_iterator & amp;  

और उन्हें एक। सीपीपी फ़ाइल में लागू करें।

तब जब मैं हैडर फ़ाइल और सीपीपी फ़ाइल दोनों शामिल करता हूं, और प्रोजेक्ट को चलाता हूं:

< पूर्व> मुख्य () {...}

मुझे त्रुटि संदेश मिला:

  sum.obj: त्रुटि LNK2005: "डबल __ cdecl क्लास std :: map & lt; class std :: basic_string & lt; char, स्ट्रेट std :: char_traits & lt; char & gt; class std :: allocator & lt; char & gt; & gt; ....  

क्या कोई मुझे यह संकेत दे सकता है कि मैंने क्या किया हो सकता है?

बहुत धन्यवाद!

मुझे लगता है कि यह आपकी समस्या है:

  डबल राशि & lt; नक्शे & lt; स्ट्रिंग, डबल & gt; & gt; # & lt; - यहां  

ऐसा लगता है कि आप ">>" ऑपरेटर का उपयोग करके, आपको उस जगह से बचने के लिए जगह देनी चाहिए कि

  डबल योग & lt; मानचित्र & lt; स्ट्रिंग, डबल & gt; & gt; # space  

No comments:

Post a Comment