से बचें मेरे पास शीर्षलेख केवल फ़ाइल में निम्न कोड है।शीर्षलेख फ़ाइल में वैश्विक फ़ंक्शन परिभाषा है, और डुप्लिकेट प्रतीक लिंकेज त्रुटि
#pragma once
class error_code {
public:
unsigned __int64 hi;
unsigned __int64 lo;
};
std::ostream& operator<< (std::ostream& o, const error_code& e) {
return o << "[" << e.hi << "," << e.lo << "]";
}
मुझे लिंकेज त्रुटि मिलती है, जब परियोजना में 2 सीपीपी होते हैं तो यह हेडर फ़ाइल शामिल होती है।
त्रुटि LNK2005: "वर्ग error_code त्रुटि __cdecl ऑपरेटर | (कक्षा error_code त्रुटि स्थिरांक &, वर्ग ViTrox :: error_code त्रुटि स्थिरांक &)" (? ?? यू @@ YA AVerror_code @ 0 @ ABV10 @ 0 @ जेड) पहले से ही xxx.obj
में परिभाषित मैं अगर मैं एक cpp फाइल करने के लिए operator<<
की परिभाषा ले जाते हैं, या एक DLL फ़ाइल के लिए मैं इस समस्या को हल कर सकते हैं, पता है।
हालांकि, मैं उन्हें सिंगल शीर्षलेख फ़ाइल में रखना चाहता हूं। क्या हासिल करने के लिए कोई तकनीक है? या क्या मुझे परिभाषा को दूसरी फाइल में अलग करना चाहिए?
त्रुटि संदेश आपके कोड स्निपेट से मेल नहीं खाता है। –