स्टेटिक ऑब्जेक्ट फ़ील्ड के लिए अनसुलझे बाहरी प्रतीक
यह आलेख सेट करने का प्रयास करते समय सामने आए त्रुटि संदेश "त्रुटि LNK2001: अनसुलझे बाहरी प्रतीक" की जांच करता है मुख्य विधि से कक्षा में एक स्थिर फ़ील्ड।
प्रदान किए गए कोड स्निपेट में, की घोषणा वर्ग "बी" में स्थिर क्षेत्र "ए" वर्ग परिभाषा के भीतर ही होता है। हालाँकि, C मानक के अनुसार, ऐसी घोषणाओं को परिभाषाएँ नहीं माना जाता है। स्थैतिक डेटा सदस्यों के लिए, "::" ऑपरेटर का उपयोग करते हुए, उचित परिभाषा को संलग्न नामस्थान दायरे में वर्ग के बाहर प्रदर्शित होना चाहिए।
इस आवश्यकता को नियंत्रित करने वाले नियम को वन डेफिनिशन नियम (ओडीआर) के रूप में जाना जाता है। जो अनिवार्य करता है कि प्रत्येक इकाई (स्थैतिक डेटा सदस्यों सहित) की पूरे कार्यक्रम में एक अद्वितीय परिभाषा हो। यह नियम सुनिश्चित करता है कि स्थिर सदस्य के मूल्य के संबंध में कोई अस्पष्टता नहीं है।
इसलिए, त्रुटि को हल करने के लिए, कोड को निम्नानुसार संशोधित किया जाना चाहिए, जहां "ए" को नेमस्पेस स्कोप में परिभाषित किया गया है:
class A
{
public:
A()
{
}
};
class B
{
public:
static A* a;
};
A* B::a; // Definition in namespace scope
int main()
{
B::a = new A;
}
क्लास के बाहर स्थिर सदस्य को स्पष्ट रूप से परिभाषित करके, लिंकर प्रतीक संदर्भ को सही ढंग से हल कर सकता है और कोड सफलतापूर्वक संकलित हो जाएगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3