"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ में स्टेटिक फ़ील्ड सेट करते समय मुझे \"अनसुलझे बाहरी प्रतीक\" त्रुटि क्यों मिल रही है?

C++ में स्टेटिक फ़ील्ड सेट करते समय मुझे \"अनसुलझे बाहरी प्रतीक\" त्रुटि क्यों मिल रही है?

2024-11-09 को प्रकाशित
ब्राउज़ करें:767

Why Am I Getting \

स्टेटिक ऑब्जेक्ट फ़ील्ड के लिए अनसुलझे बाहरी प्रतीक

यह आलेख सेट करने का प्रयास करते समय सामने आए त्रुटि संदेश "त्रुटि 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