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

एक ही लाइन पर एकाधिक ऑब्जेक्ट पॉइंटर्स घोषित करने से C++ में कंपाइलर त्रुटियाँ क्यों होती हैं?

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

Why Does Declaring Multiple Object Pointers on a Single Line Lead to Compiler Errors in C  ?

एक लाइन पर कई ऑब्जेक्ट पॉइंटर्स घोषित करना: कंपाइलर त्रुटि को सुलझाना

एक ही लाइन पर कई ऑब्जेक्ट पॉइंटर्स घोषित करते समय, डेवलपर्स को अक्सर एक सामान्य समस्या का सामना करना पड़ता है जिसके कारण हो सकता है संकलक त्रुटियाँ. सही कोड निष्पादन सुनिश्चित करने के लिए इस समस्या के मूल कारण को समझना महत्वपूर्ण है।

निम्नलिखित वर्ग घोषणा पर विचार करें:

public:
    Entity()
    {
        re_sprite_eyes = new sf::Sprite();
        re_sprite_hair = new sf::Sprite();
        re_sprite_body = new sf::Sprite();
    }

private:
    sf::Sprite* re_sprite_hair;
    sf::Sprite* re_sprite_body;
    sf::Sprite* re_sprite_eyes;

इस मामले में, प्रत्येक पॉइंटर को अलग से घोषित करने से सही कार्यक्षमता सुनिश्चित होती है। हालाँकि, घोषणाओं को एक पंक्ति में संक्षिप्त करने का प्रयास करते समय:

private:
    sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;

संकलक एक त्रुटि उत्पन्न करता है:

error: no match for 'operator=' in '((Entity*)this)->Entity::re_sprite_eyes = (operator new(272u), (<statement>, ((sf::Sprite*)<anonymous>)))

इस त्रुटि को समझने की कुंजी तारांकन चिह्न (*) ऑपरेटर के उद्देश्य में निहित है। सी में, तारांकन या तो एक सूचक या एक डीरेफ़रेंस ऑपरेशन को इंगित कर सकता है। इस उदाहरण में, तारांकन को sf::Sprite ऑब्जेक्ट के संकेतक को इंगित करना चाहिए। हालाँकि, ऊपर दी गई घोषणा गलत तरीके से तारांकन को re_sprite_body और re_sprite_eyes पर लागू करने, पॉइंटर्स के बजाय ऑब्जेक्ट बनाने की व्याख्या करती है।

इस समस्या को हल करने के लिए, सही सिंटैक्स है:

sf::Sprite *re_sprite_hair, *re_sprite_body, *re_sprite_eyes;

इसके साथ स्पष्टीकरण, प्रत्येक सूचक को उचित रूप से घोषित किया गया है, कंपाइलर त्रुटि को हल किया गया है और इच्छित कार्यक्षमता सुनिश्चित की गई है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3