मुझे एक अजीब समस्या है। विंडोज़ पर, विजुअल स्टूडियो 2010 के साथ और इंटेल कंपाइलर के साथ सब कुछ अपेक्षित के रूप में जुड़ा हुआ है। लेकिन जब मैं लिनक्स पर CLang 3.0 के साथ अपना कोड संकलित करने का प्रयास करता हूं, तो यह संकलित करता है (और यदि मैं केवल एक सीपीपी फ़ाइल का उपयोग करता हूं तो यह लिंक और रन भी करता है) लेकिन लिंक नहीं करता है।लिनक्स सी ++: एकाधिक फ़ाइलों में टेम्पलेट विशेषज्ञता का सही तरीके से उपयोग कैसे करें?
संदेश यह है कि टेम्पलेट instanciations का जिक्र करते हुए, कई प्रतीक परिभाषाएं हैं।
"फ़ाइल xyz":
लिनक्स लिंकर मैं की तर्ज पर कुछ मिलेगा सेtemplate<class T> void myFunc(T in) { } template<> void myFunc<int>(int in) { }
अब उदाहरण के लिए: एक हेडर फाइल कई संकलन इकाइयों के पार साझा में निम्नांकित दो पंक्तियों पर विचार एकाधिक "myFunc (int in)" की परिभाषा, जिसे पहले "कुछ फ़ाइल" में परिभाषित किया गया था।
लेकिन मैं इसे कैसे रोकूं? चूंकि यह विंडोज़ पर काम करता है, मुझे लगता है कि इसे किसी भी तरह लिनक्स पर भी काम करना चाहिए?
वही स्थिर टेम्पलेट डेटा सदस्यों के लिए जाता है, जो उपरोक्त के समान ही कम होते हैं, बस एक फ़ंक्शन के बजाय आप एक चर घोषित करते हैं। अगर मैं स्थिर टेम्पलेट डेटा सदस्यों के लिए काम करता हूं तो मैं पसंद करूंगा।
बाकी सब विफल रहता है मुझे लगता है मैं अभी भी एक "MakeAll.cpp" फाइल जो सिर्फ सभी सीपीपी देखते हैं शामिल हैं बना सकते हैं लगता है, लेकिन है कि मेरे पास एक वांछनीय समाधान की तरह ध्वनि नहीं है, तो ...
के लिए धन्यवाद आपकी सहायता!
क्या आप # शामिल गार्ड का उपयोग कर रहे हैं? –
@SteveC उपयोगकर्ता यह बता रहा है कि कोड संकलित करता है लेकिन लिंक नहीं करता है। शामिल गार्ड लिंक समय त्रुटियों के बजाय कंपाइलर त्रुटियों को ट्रिगर करेगा। –