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

मैं C++ में एक गैर-कॉन्स्ट लैवल्यू संदर्भ को एक आरवैल्यू से क्यों नहीं जोड़ सकता?

2024-12-22 को प्रकाशित
ब्राउज़ करें:573

 Why Can\'t I Bind a Non-Const Lvalue Reference to an Rvalue in C  ?

नॉन-कॉन्स्ट लैवल्यू रेफरेंस को आरवैल्यू से नहीं बांध सकते: एक रिज़ॉल्यूशन

दिए गए कोड स्निपेट में क्लास फू के एक ऑब्जेक्ट को इनिशियलाइज़ करते समय एक त्रुटि आई क्लास बार के कंस्ट्रक्टर के भीतर। त्रुटि संदेश इंगित करता है कि एक गैर-कॉन्स्ट लैवल्यू संदर्भ (फू एफ) को एक प्रतिद्वंद्विता (जेनवैल्यू() को कॉल करने का परिणाम) से जोड़ा जा रहा है।

सी में, गैर-कॉन्स्ट संदर्भ पैरामीटर केवल नामित को संदर्भित कर सकते हैं चर (मान)। हालाँकि, genValue() का परिणाम एक अस्थायी मान (rvalue) है। इस समस्या को हल करने के लिए, हमें genValue() के मान को मान (int) से पास करना होगा।

class Foo {
public:
    Foo(int x) {
        this->x = x;
    }
private:
    int x;
};

class Bar {
public:
    Bar(): f(genValue()) {
    }
private:
    Foo f;

    int genValue() {
        int x;
        // do something ...
        x = 1;
        return x;
    }
};

कंस्ट्रक्टर तर्क को int में बदलकर, अब हम बिना किसी त्रुटि के कंस्ट्रक्टर दायरे में Foo ऑब्जेक्ट को प्रारंभ कर सकते हैं।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3