मैं एक समस्या मैं वास्तव में समझ में नहीं आता है नहीं मिल रहा। मेरे पास कक्षा नोड है।C++ टेम्पलेट के साथ वर्ग अपनी निर्माता
template<class T>
class node {
protected:
T _data;
public:
node(T data);
};
यह "node.h" फ़ाइल में है।
/usr/bin/ld:
#include "node.h" template<class T> node<T>::node (T data) { _data = data; }
संकलक कोई त्रुटि, लिंकर (LD) मुझसे कहता है पाता है जबकि: "node.cpp" फ़ाइल में, वहाँ इस निर्माता है: अपरिभाषित प्रतीक:
नोड < पूर्णांक > :: नोड (int)
अजीब हिस्सा ... यदि मैं कन्स्ट्रक्टर को .cpp से .h फ़ाइल में ले जाता हूं, तो सब कुछ ठीक काम करता है। समस्या कहाँ हे?
तुम भी cpp फ़ाइल में एक गैर templatized वर्ग के templatized सदस्य कार्यों रख सकते हैं यदि आप कभी नहीं उन्हें कहीं और कॉल करने के लिए जा रहे हैं (ताकि इस लागू करने, वे निजी होना चाहिए, लेकिन उन्हें होना जरूरी नहीं है)। – rmeador