मेरी समस्या यह है कि जब मैं एक डाउनलोड लाइब्रेरी बनाना चाहता हूं तो मुझे GCC से कुछ अजीब संकलन त्रुटियां मिलती हैं और जिस कोड को संकलक सही करने की मांग करता है वह सही लगता है।जीसीसी संकलन त्रुटि: 'strlen' की घोषणा उपलब्ध होनी चाहिए
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
यहाँ लाइन 96 के आसपास कोड है::
त्रुटियों इस तरह सभी कर रहे हैं
GaCatalogueEntry(const char* name, T* data)
{
if(name)
{
_nameLength = (int)strlen(name); // LINE 96
// copy name
_name = new char[ _nameLength + 1 ];
strcpy(_name, name); // LINE 100: similar error
_data = data;
return;
}
_name = NULL;
_nameLength = 0;
_data = NULL;
}
क्या मैं इन त्रुटियों को ठीक करने के लिए संकलन कर सकते हैं?
ऐसा लगता है कि आपके पास नामों के साथ ग्लोबल्स का एक सेट है जो '_ [a-z]। *' से मेल खाता है, उन नामों को कार्यान्वयन के लिए आरक्षित किया गया है। ('_ [a-z]। *' गैर-वैश्विक नामों जैसे स्थानीय चर और वर्ग के सदस्यों के लिए ठीक है) – MSalters
मुझे नहीं लगता कि वे ग्लोबल्स हैं - बल्कि सदस्य चर हैं। मुझे लगता है कि GaCatalogueEntry एक टेम्पलेट श्रेणी में एक सदस्य समारोह है। लेकिन आप सही हैं, नामकरण सम्मेलन रखना खतरनाक है जिसमें अंडरस्कोर उपसर्ग शामिल हैं। सदस्य चर के लिए, m_ उपसर्ग, या _ प्रत्यय का उपयोग करना बेहतर है। –